Saltearse al contenido

Vinculación por QR

El QR impreso

Cada equipo sale de fábrica con un QR pegado que contiene una URL:

https://web.linter-iot-stg.icent.digital/v/<payload>

El payload es pedido.mac.cliente.icc.partNumber:

SegmentoEjemploNotas
pedidoPED-2026-04-1832Orden de fabricación / pedido
macA4CF12BB73D4Se normaliza a minúsculas → deviceId
clienteAutocolorEtiqueta informativa
icc8934…ICC de la SIM (vacío si el equipo es WiFi)
partNumberGJ30Debe existir en el catálogo de tipos

La API acepta el QR tanto en forma URL como en payload crudo en todos los endpoints de vinculación.

Flujo

  1. Escaneo — el cliente final (o el instalador) abre la URL del QR:
    • Sin sesión: la página pública ofrece iniciar sesión o crear cuenta (el registro crea un cliente + usuario en estado PENDING).
    • Con sesión: directo al asistente con el equipo precargado.
  2. SolicitudPOST /v1/bindings/scan { qr } crea una Assignment en PENDING_REVIEW. Si hay reglas de notificación configuradas, Linter recibe un email con el ICC para activar la SIM.
    • Los roles comerciales (filial, distribuidor, instalador) indican además el cliente final en la misma llamada: client: { email, companyName?, fiscalId?, description? }. Con un email ya registrado el equipo se vincula a ese cliente; con uno nuevo se crea el cliente en PENDING (deduplicado por CIF) con ese email como contacto.
  3. Aprobación — ROOT revisa en Vinculaciones y aprueba (POST /v1/assignments/:id/approve): se materializa el Device en estado ACTIVE y, si el solicitante venía del registro self-service, su cuenta y su cliente se activan a la vez. Si la solicitud la tramitó un rol comercial, el cliente queda además ligado a su cadena (visible en su cartera). El solicitante recibe un email.
  4. Reinstalación — volver a vincular una MAC a otro cliente desactiva la asignación anterior (el histórico nunca se borra) y requiere confirmación explícita.

Endpoints relacionados

EndpointUso
POST /v1/public/qr-previewIdentidad de catálogo del QR (pública, sin datos comerciales)
POST /v1/bindings/previewIdentidad + estado de vinculación (autenticado)
POST /v1/bindings/scanCrear la solicitud (PENDING_REVIEW); roles comerciales añaden client
POST /v1/bindings/client-lookup¿El email pertenece a un cliente registrado? (roles comerciales)
POST /v1/bindingsAlta directa por administrador (auto-aprobada)
GET /v1/assignmentsCola de vinculaciones del ámbito
POST /v1/assignments/:id/approve / …/rejectDecisión de ROOT