Saltar al contenido principal

Schemas y DTOs

Colección completa de más de 30 schemas de MongoDB y 18 DTOs validados que proporcionan la estructura de datos para toda la plataforma.


Modelos Centralizados

Todos los schemas y DTOs están centralizados en la biblioteca de packages para garantizar consistencia entre microservicios. Cualquier cambio en la estructura de datos se propaga automáticamente a todos los servicios que la utilizan.


Schemas de MongoDB​

Usuarios y Autenticación​

User Schema​

Schema principal de usuarios:

  • email – Email único del usuario
  • password – Hash bcrypt de contraseña
  • firstName / lastName – Nombre completo
  • pinSecurity – Configuración PIN (hash, intentos, bloqueo)
  • kycVerified – Estado de verificación
  • roles – Array de roles asignados
  • twoFactorEnabled – Estado de 2FA
  • createdAt / updatedAt – Timestamps

OAuth2 Schema​

Configuración OAuth2 y KYC:

  • userId – Referencia al usuario
  • provider – Proveedor OAuth (Google, Facebook)
  • providerId – ID en el proveedor
  • kycStatus – Estado KYC detallado
  • verificationLevel – Nivel alcanzado
  • documents – Documentos verificados

SessionAccess Schema​

Sesiones activas:

  • userId – Usuario propietario
  • jti – JWT ID único
  • deviceInfo – Información del dispositivo
  • ip – IP de la sesión
  • lastActivity – Última actividad
  • expiresAt – Expiración de sesión

LogoutRecord Schema​

Historial de logout:

  • userId – Usuario
  • jti – JWT revocado
  • logoutType – Manual, automático o forzado
  • timestamp – Momento del logout

LinkedDevice Schema​

Dispositivos vinculados:

  • userId – Usuario propietario
  • deviceId – ID único del dispositivo
  • deviceName – Nombre descriptivo
  • deviceType – Tipo (móvil, web, desktop)
  • linkedAt – Fecha de vinculación
  • lastUsed – Último uso

History Schema​

Historial de accesos:

  • userId – Usuario
  • action – Tipo de acción (login, logout, etc.)
  • ip – IP de origen
  • deviceInfo – Información del dispositivo
  • timestamp – Momento de la acción
  • success – Si fue exitoso

LoginActivity Schema​

Actividad de login:

  • userId – Usuario
  • loginTime – Momento del login
  • logoutTime – Momento del logout (si aplica)
  • duration – Duración de la sesión
  • ip – IP utilizada

DeletedUser Schema​

Usuarios eliminados (soft delete):

  • originalId – ID original del usuario
  • email – Email del usuario
  • deletedAt – Fecha de eliminación
  • deletedBy – Quien eliminó (usuario o admin)
  • reason – Razón de la eliminación
  • data – Snapshot de datos del usuario

UserActivity Schema​

Actividad y comportamiento:

  • userId – Usuario
  • action – Acción realizada
  • endpoint – Endpoint accedido
  • timestamp – Momento de la acción
  • metadata – Datos adicionales

Seguridad y Control​

BlockedAccess Schema​

Accesos bloqueados:

  • ip – IP bloqueada
  • userId – Usuario bloqueado (si aplica)
  • reason – Razón del bloqueo
  • blockedAt – Fecha de bloqueo
  • expiresAt – Expiración
  • attempts – Intentos desde bloqueo

SecurityEvent Schema​

Eventos de seguridad:

  • type – Tipo de evento
  • severity – Gravedad (low, medium, high, critical)
  • userId – Usuario relacionado
  • ip – IP involucrada
  • description – Descripción del evento
  • timestamp – Momento del evento

FraudAlert Schema​

Alertas de fraude:

  • userId – Usuario sospechoso
  • ruleId – Regla que disparó la alerta
  • confidence – Nivel de confianza (0-1)
  • description – Descripción de la sospecha
  • status – Estado (pending, reviewed, confirmed, dismissed)
  • createdAt – Fecha de creación

FraudRule Schema​

Reglas de detección de fraude:

  • name – Nombre de la regla
  • conditions – Condiciones a evaluar
  • action – Acción a tomar
  • enabled – Si está activa
  • priority – Prioridad de evaluación

RateLimit Schema​

Contadores de rate limiting:

  • identifier – IP, userId, email o endpoint
  • type – Tipo de limitación
  • count – Requests en ventana actual
  • windowStart / windowEnd – Ventana de tiempo
  • lastRequest – Último request

RateLimitBan Schema​

Baneos activos:

  • userId / ip – Entidad baneada
  • reason – Razón del baneo
  • level – Nivel de escalación (1-4)
  • bannedAt – Inicio del baneo
  • expiresAt – Expiración (null si permanente)
  • infractions – Array de infracciones

AuditLog Schema​

Auditoría completa:

  • userId – Usuario que realizó la acción
  • action – Acción realizada
  • resource – Recurso afectado
  • changes – Cambios realizados
  • ip – IP de origen
  • timestamp – Momento de la acción

IpBlock Schema​

Bloqueo de IPs:

  • ip – Dirección IP
  • reason – Razón del bloqueo
  • blockedAt / expiresAt – Fechas
  • attempts – Intentos desde bloqueo
  • metadata – Info adicional (geolocalización, etc.)

KycUserRecord Schema​

Registros de KYC:

  • userId – Usuario verificado
  • level – Nivel de verificación
  • documents – Documentos presentados
  • status – Estado de verificación
  • verifiedAt – Fecha de verificación
  • expiresAt – Expiración (si aplica)

Transacciones y Wallets​

Transaction Schema​

Transacciones de la plataforma:

  • userId – Usuario propietario
  • type – Tipo de transacción
  • amount – Monto
  • currency – Moneda
  • status – Estado (pending, completed, failed)
  • fromWallet / toWallet – Wallets origen y destino
  • timestamp – Momento de la transacción
  • fee – Comisión aplicada

Wallet Schema​

Wallets de usuarios:

  • userId – Usuario propietario
  • currency – Moneda del wallet
  • balance – Saldo actual
  • address – Dirección blockchain (si aplica)
  • type – Tipo de wallet (hot, cold)
  • status – Estado (active, frozen, closed)

WalletContract Schema​

Contratos de wallets:

  • walletId – Wallet asociado
  • contractAddress – Dirección del contrato
  • blockchain – Blockchain donde está deployado
  • abi – ABI del contrato
  • deployedAt – Fecha de deployment

OrderHistory Schema​

Historial de órdenes:

  • userId – Usuario
  • orderId – ID de la orden
  • type – Tipo de orden (buy, sell, convert)
  • fromCurrency / toCurrency – Monedas
  • amount – Monto
  • rate – Tasa de cambio
  • status – Estado de la orden
  • timestamp – Momento de la orden

Otros Schemas​

ChatThread / ChatMessage​

Ver sección Chat y WebSocket

EndpointStats / SystemMetrics​

Ver sección Analytics y Monitoreo

ContainerHealth / ContainerMetricsHistory​

Ver sección Health Monitoring

Policy / PolicyCurrent​

Políticas del sistema:

  • name – Nombre de la política
  • version – Versión
  • content – Contenido de la política
  • effectiveDate – Fecha de vigencia
  • mandatory – Si es obligatorio aceptar

DTOs (Data Transfer Objects)​

Validación Automática​

Todos los DTOs incluyen validaciones automáticas usando decoradores de class-validator:

  • Validación de tipos
  • Validación de formatos (email, URL, etc.)
  • Validación de rangos (min, max)
  • Validación de longitud (minLength, maxLength)
  • Validación personalizada
  • Mensajes de error descriptivos

DTOs de Autenticación​

LoginUserDto​

  • email – Email válido requerido
  • password – Mínimo 8 caracteres
  • deviceInfo – Opcional

CreateUserDto​

  • email – Email único
  • password – Requisitos de complejidad
  • firstName / lastName – Requeridos
  • acceptTerms – Boolean requerido

UpdateUserDto​

  • Todos los campos opcionales
  • Validación solo de campos presentes
  • Partial de CreateUserDto

CheckEmailCodeDto​

  • email – Email válido
  • code – Código de 6 dígitos

DTOs de PIN Security​

PinDto​

  • pin – 6 dígitos numéricos

ConfigurePinDto​

  • pin – 6 dígitos
  • confirmPin – Debe coincidir con pin

VerifyPinDto​

  • pin – 6 dígitos
  • jti – JWT ID

UpdatePinDto​

  • oldPin – PIN actual
  • newPin – Nuevo PIN
  • confirmNewPin – Confirmación

DTOs de Transacciones​

CreateOrderDto​

  • type – buy/sell/convert
  • fromCurrency – Moneda origen
  • toCurrency – Moneda destino
  • amount – Mayor a 0

WithdrawDto​

  • walletId – ID del wallet
  • amount – Mayor a 0
  • address – Dirección destino válida

ConvertDto​

  • fromCurrency / toCurrency – Monedas
  • amount – Monto a convertir

OrderHistoryQueryDto​

  • page – Número de página (default 1)
  • limit – Resultados por página (default 10)
  • status – Filtro opcional
  • dateFrom / dateTo – Rango de fechas

DTOs de Sistema​

CreateBridgeDto​

  • name – Nombre del bridge
  • fromChain / toChain – Blockchains
  • fee – Comisión del bridge

UpdateBridgeDto​

  • Campos opcionales de CreateBridgeDto

CreateWalletDto​

  • currency – Moneda del wallet
  • type – Tipo de wallet

CreateUserBankDto​

  • bankName – Nombre del banco
  • accountNumber – Número de cuenta
  • accountType – Tipo de cuenta

CryptoCurrencyDto​

  • symbol – Símbolo de la crypto
  • name – Nombre completo
  • decimals – Decimales soportados
  • network – Red blockchain

DTOs de Chat​

ChatDto​

  • threadId – ID del thread
  • content – Contenido del mensaje
  • type – Tipo de mensaje

UserTypingDto​

  • threadId – Thread
  • isTyping – Boolean

NotificationDto​

  • userId – Destinatario
  • type – Tipo de notificación
  • data – Datos adicionales

TxNotificationDto​

  • userId – Usuario
  • transactionId – ID de transacción
  • type – Tipo de notificación de tx

DTOs de Queries​

QueryDto​

DTO genérico para queries con paginación:

  • page – Número de página (default 1)
  • limit – Resultados por página (default 10, max 100)
  • sort – Campo para ordenar
  • order – 'asc' o 'desc'
  • filters – Objeto con filtros adicionales

Consistencia de Datos

Al centralizar schemas y DTOs, garantizamos:

  • Consistencia entre microservicios
  • Validaciones uniformes en toda la plataforma
  • Migraciones sincronizadas de estructura de datos
  • Type safety completo en TypeScript
  • Documentación automática de modelos