Capitulo 6: GS1 Digital Link — QR Codes para Supply Chain

Por: Artiko
gs1digital-linkqr-codesunrise-2027url2dretailsupply-chain

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:

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

ComponenteDescripcionEjemplo
Dominio resolutorServidor que resuelve la URL. Puede ser id.gs1.org o un dominio propio de la marcahttps://id.gs1.org
Primary keyEl AI principal que identifica el recurso. Siempre va primero en la ruta/01/09521234543213
QualifiersAIs adicionales que especializan la identificacion/10/LOT123/21/SN456

Primary keys soportados

AITipo de identificador
01GTIN (producto)
00SSCC (unidad logistica)
414GLN (ubicacion)
8003GRAI (activo retornable)
8010CPID (componente/pieza)

Qualifiers comunes

AIDato
10Lote
21Numero de serie
22Variante de consumo

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

  1. El primary key (AI 01) va como primer segmento de la ruta
  2. Los qualifiers conocidos (10, 21) van como segmentos adicionales de la ruta
  3. 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 escaneaQue obtiene
Consumidor con smartphoneFicha de producto, instrucciones de uso, informacion nutricional
Inspector de calidadDatos de trazabilidad, certificados de origen
Sistema de retailInformacion de precios, stock, promociones
Regulador sanitarioDatos de serializacion, historial de eventos EPCIS
En caso de recallPagina 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.

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

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

PeriodoHito
2023-2024Definicion de estandares y guias de implementacion
2025-2026Pilotos activos con retailers y marcas en multiples paises
2027Los retailers deben poder escanear codigos 2D en POS
2027+Coexistencia de 1D y 2D hasta adopcion completa

Que significa para retailers

Que significa para fabricantes

Beneficios de la transicion

JavaScript / TypeScript

Python

Otras


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.