Capitulo 6: GS1 Digital Link — QR Codes para Supply Chain
Que es GS1 Digital Link
GS1 Digital Link es un estandar que transforma identificadores GS1 en URIs web navegables. En lugar de codificar datos binarios que solo un sistema especializado puede interpretar, el GS1 Digital Link produce URLs que:
- Un smartphone puede abrir en el navegador
- Un escaner industrial puede parsear como datos GS1
- Un sistema de trazabilidad puede resolver a multiples destinos
Es la convergencia entre el mundo fisico de los codigos de barras y el mundo digital de las URLs.
Estructura del URI
https://example.com/01/09521234543213/10/LOT123/21/SN456
└──────────────────┘ └─┘ └────────────┘ └─┘└─────┘└─┘└───┘
Dominio resolutor AI Valor AI Valor AI Valor
(primary key) (qualifiers)
Componentes
| Componente | Descripcion | Ejemplo |
|---|---|---|
| Dominio resolutor | Servidor que resuelve la URL. Puede ser id.gs1.org o un dominio propio de la marca | https://id.gs1.org |
| Primary key | El AI principal que identifica el recurso. Siempre va primero en la ruta | /01/09521234543213 |
| Qualifiers | AIs adicionales que especializan la identificacion | /10/LOT123/21/SN456 |
Primary keys soportados
| AI | Tipo de identificador |
|---|---|
| 01 | GTIN (producto) |
| 00 | SSCC (unidad logistica) |
| 414 | GLN (ubicacion) |
| 8003 | GRAI (activo retornable) |
| 8010 | CPID (componente/pieza) |
Qualifiers comunes
| AI | Dato |
|---|---|
| 10 | Lote |
| 21 | Numero de serie |
| 22 | Variante de consumo |
Construir un Digital Link desde un Element String
Dado el Element String:
(01)09521234543213(17)261231(10)LOTE-AB1(21)SN001
El GS1 Digital Link resultante seria:
https://id.gs1.org/01/09521234543213/10/LOTE-AB1/21/SN001?17=261231
Reglas de conversion
- El primary key (AI 01) va como primer segmento de la ruta
- Los qualifiers conocidos (10, 21) van como segmentos adicionales de la ruta
- Los datos adicionales que no son qualifiers (como 17, fecha de vencimiento) van como query parameters
function elementStringToDigitalLink(
domain: string,
parsed: Array<{ ai: string; value: string }>
): string {
const PRIMARY_KEYS = ['01', '00', '414', '8003', '8010'];
const QUALIFIERS: Record<string, string[]> = {
'01': ['22', '10', '21'],
'00': [],
'414': ['254'],
};
const primary = parsed.find(p => PRIMARY_KEYS.includes(p.ai));
if (!primary) throw new Error('No primary key found');
const allowedQualifiers = QUALIFIERS[primary.ai] ?? [];
const qualifiers = parsed.filter(
p => p.ai !== primary.ai && allowedQualifiers.includes(p.ai)
);
const extras = parsed.filter(
p => p.ai !== primary.ai && !allowedQualifiers.includes(p.ai)
);
let path = `${domain}/${primary.ai}/${primary.value}`;
for (const q of qualifiers) {
path += `/${q.ai}/${q.value}`;
}
if (extras.length > 0) {
const params = extras.map(e => `${e.ai}=${encodeURIComponent(e.value)}`);
path += `?${params.join('&')}`;
}
return path;
}
Resolucion multiple
La verdadera potencia del Digital Link es que una misma URL puede resolver a diferentes destinos segun quien la escanee y en que contexto:
| Quien escanea | Que obtiene |
|---|---|
| Consumidor con smartphone | Ficha de producto, instrucciones de uso, informacion nutricional |
| Inspector de calidad | Datos de trazabilidad, certificados de origen |
| Sistema de retail | Informacion de precios, stock, promociones |
| Regulador sanitario | Datos de serializacion, historial de eventos EPCIS |
| En caso de recall | Pagina de retiro de mercado con instrucciones |
Esto se logra mediante content negotiation en el servidor resolutor: el mismo URI devuelve diferentes respuestas segun los headers HTTP (Accept, User-Agent) o parametros adicionales.
Link types
El estandar define link types que permiten solicitar un tipo especifico de recurso:
https://id.gs1.org/01/09521234543213?linkType=gs1:pip
https://id.gs1.org/01/09521234543213?linkType=gs1:recallStatus
https://id.gs1.org/01/09521234543213?linkType=gs1:traceability
GS1 Digital Link como QR Code
Un GS1 Digital Link se codifica directamente en un QR code estandar. Cualquier aplicacion de camara puede leerlo como una URL. Pero un escaner GS1-aware puede extraer los AIs de la estructura de la URL.
┌─────────────────────┐
│ ███ ██ █ ██ ██ ███ │
│ █ █ ██ ██ █ ██ █ █ │
│ █ █ █ █ █ ██ █ █ │
│ █ ████ █ █ │
│ ██ █ █ ██ ████ █ █ │
│ █ █ ██ █ █ █ █ █ █ │
│ ███ █ ██ █ █ ██ ███ │
└─────────────────────┘
https://id.gs1.org/01/09521234543213
La ventaja sobre un QR comun con URL es que el Digital Link tiene una estructura predecible y parseable. Un sistema puede extraer el GTIN, lote y serie directamente de la URL sin necesidad de llamar al servidor.
Proyecto Sunrise 2027
Sunrise 2027 es la iniciativa global de GS1 para migrar del codigo de barras 1D (EAN-13) al codigo 2D (GS1 Digital Link QR o DataMatrix) en el punto de venta retail.
Timeline
| Periodo | Hito |
|---|---|
| 2023-2024 | Definicion de estandares y guias de implementacion |
| 2025-2026 | Pilotos activos con retailers y marcas en multiples paises |
| 2027 | Los retailers deben poder escanear codigos 2D en POS |
| 2027+ | Coexistencia de 1D y 2D hasta adopcion completa |
Que significa para retailers
- Los POS deben poder leer tanto EAN-13 como QR/DataMatrix
- El escaner debe extraer el GTIN del Digital Link y buscarlo en el catalogo
- Periodo de transicion: los productos llevaran ambos codigos (1D + 2D)
Que significa para fabricantes
- Deben generar GTINs codificados en GS1 Digital Link
- Deben mantener un resolutor (propio o a traves de GS1) para sus URLs
- Oportunidad de agregar datos adicionales (lote, vencimiento, trazabilidad) en el mismo codigo
Beneficios de la transicion
- Un solo codigo en el empaque en lugar de dos o tres
- Mas datos accesibles desde el POS (vencimiento, lote)
- Consumer engagement: el mismo codigo lleva al consumidor a informacion del producto
- Trazabilidad: el retailer puede capturar lote y serie en la venta
Librerias para Digital Link
JavaScript / TypeScript
- gs1-digital-link-toolkit (npm): parseo y construccion de Digital Links
- gs1js (npm): validacion de GTINs y otros identificadores GS1
Python
- gs1_digital_link_toolkit (PyPI): equivalente Python del toolkit oficial
- biip (PyPI): parseo de codigos de barras GS1 incluyendo Digital Link
Otras
- GS1 Digital Link URI Syntax (W3C): especificacion formal del formato URI
- GS1 Resolver (open source): implementacion de referencia del servidor resolutor
En el ultimo capitulo veremos como todo lo aprendido (GTIN, GLN, SSCC, AIs, GS1-128 y Digital Link) se aplica en la practica en diferentes industrias.