Volver a documentación
Guía20 min

Gestión de evidencia

Almacena y recupera expedientes digitales con trazabilidad completa para pasar auditorías y cumplir con regulación.

Qué se almacena automáticamente

Cada verificación genera un expediente digital completo:

Imágenes y video

  • • Foto del documento (frente y reverso)
  • • Selfie del usuario
  • • Video de prueba de vida
  • • Capturas del proceso

Datos extraídos

  • • Datos OCR del documento
  • • Scores biométricos
  • • Resultados de validación
  • • Consultas a fuentes oficiales

Metadatos

  • • Timestamps certificados
  • • Geolocalización
  • • Dirección IP
  • • User agent / dispositivo

Auditoría

  • • Log de eventos completo
  • • Cadena de custodia
  • • Hashes de integridad
  • • Accesos al expediente

1. Consultar expediente

Recupera el expediente completo de una verificación:

GET /v1/evidence/{verificationId}
const evidence = await jaak.evidence.get('ver_abc123');

console.log(evidence);
// {
//   "verificationId": "ver_abc123",
//   "createdAt": "2025-01-09T10:30:00Z",
//   "status": "approved",
//
//   "subject": {
//     "name": "Juan Pérez García",
//     "documentNumber": "XXXX1234567890",
//     "curp": "PEGJ900515HDFRRL09"
//   },
//
//   "documents": {
//     "front": {
//       "url": "https://evidence.jaak.ai/ver_abc123/doc_front.jpg",
//       "hash": "sha256:abc123...",
//       "capturedAt": "2025-01-09T10:28:15Z"
//     },
//     "back": {
//       "url": "https://evidence.jaak.ai/ver_abc123/doc_back.jpg",
//       "hash": "sha256:def456..."
//     }
//   },
//
//   "biometrics": {
//     "selfie": {
//       "url": "https://evidence.jaak.ai/ver_abc123/selfie.jpg",
//       "hash": "sha256:ghi789..."
//     },
//     "livenessVideo": {
//       "url": "https://evidence.jaak.ai/ver_abc123/liveness.mp4",
//       "duration": 3.2
//     },
//     "scores": {
//       "liveness": 0.98,
//       "faceMatch": 0.95
//     }
//   },
//
//   "validations": {...},
//   "metadata": {...},
//   "auditLog": [...]
// }

2. Descargar archivos

// Descargar imagen individual
const imageBuffer = await jaak.evidence.downloadFile(
  'ver_abc123',
  'documents.front'
);
fs.writeFileSync('./documento_frente.jpg', imageBuffer);

// Descargar todo el expediente como ZIP
const zipBuffer = await jaak.evidence.downloadAll('ver_abc123');
fs.writeFileSync('./expediente_completo.zip', zipBuffer);

// Generar PDF de expediente para auditoría
const pdfBuffer = await jaak.evidence.generateReport('ver_abc123', {
  format: 'audit_report',
  language: 'es',
  includeImages: true,
  includeAuditLog: true
});
fs.writeFileSync('./reporte_auditoria.pdf', pdfBuffer);

3. Buscar expedientes

Busca expedientes por diferentes criterios:

// Buscar por nombre o documento
const results = await jaak.evidence.search({
  query: 'Juan Pérez',
  fields: ['name', 'documentNumber', 'curp'],
  dateRange: {
    from: '2024-01-01',
    to: '2025-01-09'
  },
  status: ['approved', 'rejected'],
  limit: 50,
  offset: 0
});

// Buscar por metadatos personalizados
const results2 = await jaak.evidence.search({
  metadata: {
    'userId': 'usr_123',
    'applicationId': 'app_456'
  }
});

// Listar todos los expedientes de un período
const allRecords = await jaak.evidence.list({
  dateRange: {
    from: '2024-12-01',
    to: '2024-12-31'
  },
  orderBy: 'createdAt',
  order: 'desc'
});

4. Log de auditoría

Consulta el registro de todos los eventos y accesos:

const auditLog = await jaak.evidence.getAuditLog('ver_abc123');

// [
//   {
//     "timestamp": "2025-01-09T10:28:00Z",
//     "event": "verification_started",
//     "actor": "end_user",
//     "ip": "189.xxx.xxx.xxx",
//     "userAgent": "Mozilla/5.0..."
//   },
//   {
//     "timestamp": "2025-01-09T10:28:15Z",
//     "event": "document_captured",
//     "details": { "side": "front", "quality": 0.95 }
//   },
//   {
//     "timestamp": "2025-01-09T10:30:00Z",
//     "event": "verification_completed",
//     "result": "approved"
//   },
//   {
//     "timestamp": "2025-01-10T14:00:00Z",
//     "event": "evidence_accessed",
//     "actor": "api_user",
//     "apiKeyId": "key_abc",
//     "action": "download"
//   }
// ]

5. Retención y eliminación

// Configurar política de retención por tipo
await jaak.evidence.setRetentionPolicy({
  default: '5y', // 5 años por defecto (LFPIORPI)
  policies: [
    {
      type: 'kyc_financial',
      retention: '10y' // 10 años para sector financiero
    },
    {
      type: 'signature',
      retention: '10y'
    }
  ]
});

// Solicitar eliminación (para cumplir con LFPDPPP)
// Solo si no hay obligación legal de conservación
await jaak.evidence.requestDeletion('ver_abc123', {
  reason: 'user_request_arco',
  requestedBy: 'privacy@tuempresa.com'
});

// La eliminación se ejecuta después de validar
// que no hay obligaciones legales pendientes

Nota: La LFPIORPI requiere conservar expedientes por mínimo 5 años. JAAK valida automáticamente antes de eliminar.

Reporte para auditorías

Genera reportes listos para presentar a reguladores:

// Generar reporte de cumplimiento
const complianceReport = await jaak.evidence.generateComplianceReport({
  dateRange: {
    from: '2024-01-01',
    to: '2024-12-31'
  },
  format: 'cnbv', // 'cnbv', 'uif', 'custom'
  includeStatistics: true,
  includeFailedVerifications: true
});

// El reporte incluye:
// - Total de verificaciones
// - Tasa de aprobación/rechazo
// - Desglose por tipo de documento
// - Alertas de AML generadas
// - Accesos a expedientes
// - Integridad de la cadena de custodia