Штрихкод — это не товар. prodid — да.
Постоянный открытый идентификатор для любого физического товара. Любой штрихкод и артикул разрешаются в него, а каждый факт о товаре называет источник, который его сообщил.
Спецификация публикуется только на английском, и нормативным считается английский текст.
Item · Acme
Trail Jacket
тёмно-синий · M · продаётся в TR, DE
- material100% recycled polyester✓ acme.example
- weight480 g✓ acme.example
- nameAcme Trail Jacket, navy, Mlapsed · shop.example
Проблема
Четыре кода, одна куртка, и ничто их не связывает.
Товар получает новый штрихкод для каждого рынка, размера упаковки и смены упаковки, а его данные лежат в отдельной системе для каждого из них. Когда два расходятся, один молча перезаписывается.
prodid даёт самому товару идентификатор, который не меняется, когда меняется штрихкод.
09506000134352
розничная единица для DE и TR
другой GTIN
та же куртка в наборе из двух
другой GTIN
упаковка следующего года
TJ-2041-NVY-M
артикул производителя
Один вариант
9p2d4kv7mq3nbhxf
Никогда не используется повторно и не удаляется. Любой код, который когда-либо указывал сюда, продолжает работать.
Модель
Семейство, вариант, item. Коды указывают на них, но ими не являются.
У каждого уровня свой opid: 16 символов, которые ничего не кодируют, поэтому ничто в товаре не может сделать их неверными.
family · 3n7k2q9vdfhb4mta
Acme Trail Jacket
Товар, как о нём говорят люди.
variant · 9p2d4kv7mq3nbhxf
тёмно-синий · размер M
Одно сочетание цвета, размера и прочего.
item · kq7m3v9dn2hb4t5x
Розничная единица для DE и TR
То, на чём стоит штрихкод.
- gtin09506000134352
- mpnTJ-2041-NVY-M
- skuTJ-2041-NVY-M
Новая упаковка добавляет новый item с новым штрихкодом в тот же вариант и то же семейство. Ничто, что указывало на старый, не ломается.
Как это работает
Публикуйте на своём домене. prodid индексирует. Разрешить может любой.
01 · Публикация
Три вещи на вашем домене
- /.well-known/prodid.json
- /prodid/items.ndjson
- _prodid TXT "v=prodid0; host=…"
Документ обнаружения, фид с одним товаром на строку и DNS-запись, которая доказывает, что домен ваш.
Как публиковать →02 · Индексация
Проверено, сопоставлено, атрибутировано
- каждая строка проверена по схеме
- сопоставлена с существующим opid или с новым
- каждое поле сохранено как утверждение вашего домена
Ритейлеры, реестры и открытые наборы данных — такие же источники: рядом с производителем, а не над ним.
Как устроены утверждения →03 · Разрешение
Один URL, напечатанный на товаре
prodid.org/01/09506000134352
Браузер → страница
API → JSON-запись
Путь записан в синтаксисе GS1 Digital Link, поэтому он может быть самим QR-кодом на этикетке.
Как работает разрешение →
Утверждения
Каждый факт называет источник. Разногласия остаются на виду.
Ничто не сливается в одну «истину». Когда источник перестаёт публиковать, его утверждения сохраняются и помечаются как lapsed, а не удаляются.
| Свойство | Значение | Источник | Доверие | Видно с |
|---|---|---|---|---|
| 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
- Контролирует домен и подтверждён как владелец бренда.
- verified
- Доказал контроль над доменом через DNS или собственный сайт.
- unverified
- Имя на хостинге без домена, набор данных или вклад сообщества.
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"
}
]
}Для кого
Для тех, кто создаёт данные, и для тех, кому они нужны.
Производители
Укажите данные о товаре один раз, на своём домене. Ни карточка у перекупщика, ни маркетплейс не владеют описанием того, что вы производите.
Публикация на вашем домене →Поставщики e-commerce, ERP и PIM
Один документ обнаружения и один фид на домен магазина, собранные из данных, которые у вас уже есть.
Выбрать путь →Разработчики
Разрешайте любой код в идентификатор, который переживает переупаковку. Каждый факт говорит, кто его сообщил, когда и стоит ли этот источник за ним до сих пор.
Получить данные →О цифровом паспорте продукта ЕС. ESPR требует паспорт, доступный с носителя данных на товаре, и GS1 Digital Link — один из синтаксисов носителя, которые для этого стандартизируются. prodid не является сервисом паспортов, и публикация здесь не означает соответствия чему-либо; это та же основа: одна машиночитаемая запись на товар по стабильному адресу, который контролируете вы.
Статус
Где всё это на самом деле.
Spec v1. Индекс и хостинг-публикатор работают на prodid.org. Публиковать может любой: на своём домене или на хостинге.
- Стабильно
Спецификация v1. Меняется только добавлением; всё остальное было бы v2. Документ обнаружения v0 принимается до 2027-01-26 00:00 UTC. Прочитайте её и скажите, где она неверна.
- Canary и один набор данных
Каталогов издателей в индексе пока нет. В индексе два источника: собственный canary проекта, canary.prodid.org, который подтверждает публикацию, обход и разрешение от начала до конца, и dataset:wikidata — ограниченный тестовый импорт 5 элементов Wikidata, unverified и под CC0-1.0.
- Так задумано
Индекс заменим. Спецификация, схемы, opid и сопоставления кодов распространяются под CC0. Каждое утверждение сохраняет лицензию своего источника. Факты живут на доменах, которые их публикуют, поэтому любой может обойти их заново, а напечатанные коды сохраняют смысл.
Дайте своим товарам идентичность, которая переживёт штрихкод.
Два файла и одна DNS-запись на вашем домене или размещённый сайт вообще без домена.