Endpoints públicos (sin autenticación) para validar tokens e iniciar sesiones de verificación
Validar token de invitación
Valida el token de invitación incluido en el enlace enviado al destinatario y devuelve toda la información necesaria para iniciar o continuar el flujo de verificación.
Este endpoint no requiere autenticación; el propio token JWT actúa como credencial de acceso.
Lógica de validación
El servidor realiza las siguientes comprobaciones en orden:
- Firma del JWT — verifica que el token no haya sido alterado.
- Expiración del JWT — el token tiene una fecha de expiración embebida.
- Existencia de la invitación — busca la invitación en base de datos por token.
- Estado de la invitación — las invitaciones en estado
failedson rechazadas. Las invitacionesusedse permiten si el flujo aún no está en un estado final (completed,pending_review,approved,rejected), permitiendo así que el usuario continúe una sesión interrumpida. - Estado del flujo — el flujo asociado debe estar
published. - Tiempo de ejecución — si el usuario ya inició el flujo (
expiresAtestá establecido), se verifica que no haya expirado el tiempo permitido para completarlo.
flowRunStatus
El campo flowRunStatus en la respuesta indica en qué punto se encuentra el usuario dentro del flujo:
status | Descripción | canContinue | requiresOtp |
|---|---|---|---|
not_started | El usuario nunca abrió el flujo | true | false |
in_progress | El usuario inició pero no terminó | true | false |
saved_for_later | El usuario guardó el progreso para continuar después | true | true |
completed | El flujo fue completado y está en revisión | false | false |
pending_review | Enviado para revisión manual | false | false |
approved | Verificación aprobada | false | false |
rejected | Verificación rechazada | false | false |
expired | Tiempo de ejecución agotado | false | false |
abandoned | El flujo fue abandonado | false | false |
path Parameters
invitationTokenToken JWT incluido en el enlace de verificación (linkToken del objeto invitación)
Validar token de invitación › Responses
Token válido. Devuelve los datos completos de la invitación, el flujo y el estado de ejecución actual.
messagetimestampIniciar sesión de verificación
Inicia la ejecución del flujo de verificación asociado a una invitación. Debe llamarse justo después de validar el token con GET /flow-runs/verify/{invitationToken}.
Este endpoint no requiere autenticación; el invitationToken actúa como credencial.
deviceInfo
Se recomienda enviar información del dispositivo para fines de auditoría y detección de fraude. Todos los campos son opcionales.
Iniciar sesión de verificación › Request Body
invitationTokenToken JWT obtenido del enlace de invitación (linkToken)
subjectIdIdentificador externo del sujeto en el sistema del cliente (para correlación)
externalReferenceReferencia externa adicional (número de solicitud, contrato, etc.)
deviceInfoInformación del dispositivo desde el que se inicia el flujo
Iniciar sesión de verificación › Responses
Sesión de verificación iniciada o reanudada correctamente
messagetimestampVerificar IP del usuario
Obtiene los datos de geolocalización y seguridad de la IP desde la que se realiza la solicitud. El servidor detecta la IP automáticamente a partir de las cabeceras del request (x-forwarded-for, x-real-ip) — el cliente no envía la IP en el body.
Requiere el invitationToken del flujo activo.
Respuesta
Devuelve la IP detectada junto con:
- Seguridad: indicadores de VPN, proxy, Tor y relay
- Ubicación: ciudad, región, país, coordenadas y zona horaria
- Red: número de sistema autónomo (ASN) y organización
Los datos de respuesta completos deben enviarse al Queue Service en POST /ip/verify-ip para registrar el resultado.
Verificar IP del usuario › Request Body
invitationTokenToken JWT del enlace de invitación
Verificar IP del usuario › Responses
Datos de geolocalización obtenidos correctamente
messagepaginationtimestampEnviar código de verificación por correo
Genera un OTP de 6 caracteres alfanuméricos, lo almacena hasheado (SHA-256) con una vigencia de 10 minutos y lo envía al correo indicado.
No requiere autenticación Bearer — se autentica mediante el invitationToken.
Notas
- Si ya existe un OTP activo para ese correo, se elimina y se genera uno nuevo.
- El OTP tiene un máximo de 5 intentos de validación.
- La respuesta devuelve
expiresAtpero no el OTP en sí.
Enviar código de verificación por correo › Request Body
invitationTokenToken JWT del enlace de invitación
emailCorreo electrónico del usuario al que se enviará el OTP
languageIdioma del correo enviado. Valores posibles: es, en. Por defecto: es
Enviar código de verificación por correo › Responses
OTP generado y enviado correctamente
successmessagetimestampEnviar código de verificación por SMS
Genera un OTP de 6 caracteres alfanuméricos y lo envía al número de teléfono indicado via SMS.
No requiere autenticación Bearer — se autentica mediante el invitationToken.
Notas
- El OTP tiene una vigencia de 10 minutos.
- Si ya existe un OTP activo para ese número, se elimina y se genera uno nuevo.
- La respuesta incluye el número enmascarado y
expiresAt, pero no el OTP. - Para enviar el código por llamada telefónica en lugar de SMS, usar
POST /phone/send-code-to-verify-by-callen el Queue Service.
Enviar código de verificación por SMS › Request Body
phoneNúmero de teléfono en formato E.164
invitationTokenToken JWT del enlace de invitación
languageIdioma del SMS enviado. Valores posibles: es, en. Por defecto: es
Enviar código de verificación por SMS › Responses
OTP generado y enviado correctamente
successmessagetimestampSubir comprobante de domicilio
Sube el archivo de comprobante de domicilio (factura de servicios, extracto bancario, etc.) y lo almacena en S3. Devuelve el fileId y la URL del archivo, necesarios para los pasos siguientes.
No requiere autenticación Bearer — se autentica mediante el invitationToken.
Formatos aceptados
- JPEG, PNG, PDF
- Tamaño máximo: 5 MB
Tipos de documento (documentKey)
El valor de documentKey identifica el tipo de comprobante. Valores comunes:
utility_bill_electricityutility_bill_waterutility_bill_gasbank_statement
Subir comprobante de domicilio › Request Body
invitationTokenToken JWT del enlace de invitación
flowRunUuidUUID de la ejecución del flujo (devuelto por POST /flow-runs/start como runUuid)
stepKeyClave del paso de verificación
documentKeyTipo de comprobante
flowDefinitionIdIdentificador de la definición del flujo (devuelto por GET /flow-runs/verify/{invitationToken} como flowId)
fileArchivo del comprobante (JPEG, PNG o PDF, máx. 5 MB)
Subir comprobante de domicilio › Responses
Archivo subido correctamente
success
