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 usuariopassword– Hash bcrypt de contraseñafirstName/lastName– Nombre completopinSecurity– Configuración PIN (hash, intentos, bloqueo)kycVerified– Estado de verificaciónroles– Array de roles asignadostwoFactorEnabled– Estado de 2FAcreatedAt/updatedAt– Timestamps
OAuth2 Schema​
Configuración OAuth2 y KYC:
userId– Referencia al usuarioprovider– Proveedor OAuth (Google, Facebook)providerId– ID en el proveedorkycStatus– Estado KYC detalladoverificationLevel– Nivel alcanzadodocuments– Documentos verificados
SessionAccess Schema​
Sesiones activas:
userId– Usuario propietariojti– JWT ID únicodeviceInfo– Información del dispositivoip– IP de la sesiónlastActivity– Última actividadexpiresAt– Expiración de sesión
LogoutRecord Schema​
Historial de logout:
userId– Usuariojti– JWT revocadologoutType– Manual, automático o forzadotimestamp– Momento del logout
LinkedDevice Schema​
Dispositivos vinculados:
userId– Usuario propietariodeviceId– ID único del dispositivodeviceName– Nombre descriptivodeviceType– Tipo (móvil, web, desktop)linkedAt– Fecha de vinculaciónlastUsed– Último uso
History Schema​
Historial de accesos:
userId– Usuarioaction– Tipo de acción (login, logout, etc.)ip– IP de origendeviceInfo– Información del dispositivotimestamp– Momento de la acciónsuccess– Si fue exitoso
LoginActivity Schema​
Actividad de login:
userId– UsuariologinTime– Momento del loginlogoutTime– Momento del logout (si aplica)duration– Duración de la sesiónip– IP utilizada
DeletedUser Schema​
Usuarios eliminados (soft delete):
originalId– ID original del usuarioemail– Email del usuariodeletedAt– Fecha de eliminacióndeletedBy– Quien eliminó (usuario o admin)reason– Razón de la eliminacióndata– Snapshot de datos del usuario
UserActivity Schema​
Actividad y comportamiento:
userId– Usuarioaction– Acción realizadaendpoint– Endpoint accedidotimestamp– Momento de la acciónmetadata– Datos adicionales
Seguridad y Control​
BlockedAccess Schema​
Accesos bloqueados:
ip– IP bloqueadauserId– Usuario bloqueado (si aplica)reason– Razón del bloqueoblockedAt– Fecha de bloqueoexpiresAt– Expiraciónattempts– Intentos desde bloqueo
SecurityEvent Schema​
Eventos de seguridad:
type– Tipo de eventoseverity– Gravedad (low, medium, high, critical)userId– Usuario relacionadoip– IP involucradadescription– Descripción del eventotimestamp– Momento del evento
FraudAlert Schema​
Alertas de fraude:
userId– Usuario sospechosoruleId– Regla que disparó la alertaconfidence– Nivel de confianza (0-1)description– Descripción de la sospechastatus– Estado (pending, reviewed, confirmed, dismissed)createdAt– Fecha de creación
FraudRule Schema​
Reglas de detección de fraude:
name– Nombre de la reglaconditions– Condiciones a evaluaraction– Acción a tomarenabled– Si está activapriority– Prioridad de evaluación
RateLimit Schema​
Contadores de rate limiting:
identifier– IP, userId, email o endpointtype– Tipo de limitacióncount– Requests en ventana actualwindowStart/windowEnd– Ventana de tiempolastRequest– Último request
RateLimitBan Schema​
Baneos activos:
userId/ip– Entidad baneadareason– Razón del baneolevel– Nivel de escalación (1-4)bannedAt– Inicio del baneoexpiresAt– Expiración (null si permanente)infractions– Array de infracciones
AuditLog Schema​
AuditorÃa completa:
userId– Usuario que realizó la acciónaction– Acción realizadaresource– Recurso afectadochanges– Cambios realizadosip– IP de origentimestamp– Momento de la acción
IpBlock Schema​
Bloqueo de IPs:
ip– Dirección IPreason– Razón del bloqueoblockedAt/expiresAt– Fechasattempts– Intentos desde bloqueometadata– Info adicional (geolocalización, etc.)
KycUserRecord Schema​
Registros de KYC:
userId– Usuario verificadolevel– Nivel de verificacióndocuments– Documentos presentadosstatus– Estado de verificaciónverifiedAt– Fecha de verificaciónexpiresAt– Expiración (si aplica)
Transacciones y Wallets​
Transaction Schema​
Transacciones de la plataforma:
userId– Usuario propietariotype– Tipo de transacciónamount– Montocurrency– Monedastatus– Estado (pending, completed, failed)fromWallet/toWallet– Wallets origen y destinotimestamp– Momento de la transacciónfee– Comisión aplicada
Wallet Schema​
Wallets de usuarios:
userId– Usuario propietariocurrency– Moneda del walletbalance– Saldo actualaddress– Dirección blockchain (si aplica)type– Tipo de wallet (hot, cold)status– Estado (active, frozen, closed)
WalletContract Schema​
Contratos de wallets:
walletId– Wallet asociadocontractAddress– Dirección del contratoblockchain– Blockchain donde está deployadoabi– ABI del contratodeployedAt– Fecha de deployment
OrderHistory Schema​
Historial de órdenes:
userId– UsuarioorderId– ID de la ordentype– Tipo de orden (buy, sell, convert)fromCurrency/toCurrency– Monedasamount– Montorate– Tasa de cambiostatus– Estado de la ordentimestamp– 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Ãticaversion– Versióncontent– Contenido de la polÃticaeffectiveDate– Fecha de vigenciamandatory– 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 requeridopassword– MÃnimo 8 caracteresdeviceInfo– Opcional
CreateUserDto​
email– Email únicopassword– Requisitos de complejidadfirstName/lastName– RequeridosacceptTerms– Boolean requerido
UpdateUserDto​
- Todos los campos opcionales
- Validación solo de campos presentes
- Partial de CreateUserDto
CheckEmailCodeDto​
email– Email válidocode– Código de 6 dÃgitos
DTOs de PIN Security​
PinDto​
pin– 6 dÃgitos numéricos
ConfigurePinDto​
pin– 6 dÃgitosconfirmPin– Debe coincidir con pin
VerifyPinDto​
pin– 6 dÃgitosjti– JWT ID
UpdatePinDto​
oldPin– PIN actualnewPin– Nuevo PINconfirmNewPin– Confirmación
DTOs de Transacciones​
CreateOrderDto​
type– buy/sell/convertfromCurrency– Moneda origentoCurrency– Moneda destinoamount– Mayor a 0
WithdrawDto​
walletId– ID del walletamount– Mayor a 0address– Dirección destino válida
ConvertDto​
fromCurrency/toCurrency– Monedasamount– Monto a convertir
OrderHistoryQueryDto​
page– Número de página (default 1)limit– Resultados por página (default 10)status– Filtro opcionaldateFrom/dateTo– Rango de fechas
DTOs de Sistema​
CreateBridgeDto​
name– Nombre del bridgefromChain/toChain– Blockchainsfee– Comisión del bridge
UpdateBridgeDto​
- Campos opcionales de CreateBridgeDto
CreateWalletDto​
currency– Moneda del wallettype– Tipo de wallet
CreateUserBankDto​
bankName– Nombre del bancoaccountNumber– Número de cuentaaccountType– Tipo de cuenta
CryptoCurrencyDto​
symbol– SÃmbolo de la cryptoname– Nombre completodecimals– Decimales soportadosnetwork– Red blockchain
DTOs de Chat​
ChatDto​
threadId– ID del threadcontent– Contenido del mensajetype– Tipo de mensaje
UserTypingDto​
threadId– ThreadisTyping– Boolean
NotificationDto​
userId– Destinatariotype– Tipo de notificacióndata– Datos adicionales
TxNotificationDto​
userId– UsuariotransactionId– ID de transaccióntype– 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 ordenarorder– '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