API de Homebanking - Documento de Requisitos Funcionales
Este documento describe las especificaciones funcionales de la API REST de Homebanking, diseñada para proporcionar servicios bancarios digitales a clientes finales. El sistema permite realizar operaciones financieras, consultar información de cuentas, gestionar inversiones y solicitar productos bancarios.
| Módulo | Funcionalidades | Prioridad |
|---|---|---|
| Cliente | Dashboard, datos personales, resumen de cuentas | Alta |
| Cuentas | Consulta de saldos, listado de cuentas | Alta |
| Transferencias | Transferencias propias y a terceros | Alta |
| Pagos | Pago de servicios (luz, gas, agua, internet) | Alta |
| Inversiones | Plazos fijos: creación, consulta, cancelación | Media |
| Préstamos | Solicitud de préstamos, consulta de activos | Media |
| Tarjetas | Tarjetas virtuales: generación, consulta, eliminación | Media |
| Transacciones | Historial de movimientos | Alta |
| Sistema | Reset de datos, health check | Baja |
| Campo | Valor |
|---|---|
| Username | demo |
| Nombre Completo | Juan Pérez |
| DNI | 12.345.678 |
| juan.perez@email.com | |
| Teléfono | +54 11 1234-5678 |
| Dirección | Av. Corrientes 1234, CABA, Argentina |
| ID | Tipo | Saldo Inicial | CBU |
|---|---|---|---|
ACC001 |
Cuenta Corriente | $125,450.75 | 0170001234567890123456 |
ACC002 |
Caja de Ahorro | $89,320.50 | 0170005678901234567890 |
ACC003 |
Tarjeta de Crédito | $45,000.00 (Límite: $150,000) | N/A |
Descripción: Obtiene el resumen completo del cliente, incluyendo datos personales, cuentas, saldo total y últimas transacciones.
Response:
{
"cliente": {
"nombre": "Juan Pérez",
"dni": "12.345.678",
"email": "juan.perez@email.com"
},
"cuentas": [...],
"saldo_total": 259771.25,
"ultimas_transacciones": [...]
}
Descripción: Obtiene únicamente los datos personales del cliente.
Descripción: Realiza una transferencia bancaria (propia o a terceros).
Request Body:
{
"cuenta_origen": "ACC001",
"cuenta_destino": "ACC002",
"monto": 5000.00,
"motivo": "Pago de servicios",
"tipo": "propia"
}
Validaciones:
Códigos de Error:
| Código | Descripción |
|---|---|
MONTO_INVALIDO |
Monto menor al mínimo permitido |
LIMITE_EXCEDIDO |
Monto supera el límite por transferencia |
LIMITE_DIARIO_EXCEDIDO |
Límite diario acumulado superado |
CUENTA_INVALIDA |
Cuenta origen no válida |
FONDOS_INSUFICIENTES |
Saldo insuficiente |
DESTINO_INVALIDO |
CBU/Alias inválido o cuenta inexistente |
Descripción: Lista los beneficiarios guardados del usuario.
Descripción: Obtiene los límites de transferencia configurados.
Descripción: Crea un nuevo plazo fijo.
Request Body:
{
"cuenta_origen": "ACC001",
"monto": 50000.00,
"plazo_dias": 90
}
Tasas de Interés Anuales:
| Plazo (días) | TNA (%) |
|---|---|
| 30 | 35% |
| 60 | 38% |
| 90 | 42% |
| 180 | 45% |
| 360 | 50% |
Validaciones:
Cálculo de Interés:
Interés = (Monto × TNA × Días) / (365 × 100)
Descripción: Lista los plazos fijos activos del usuario.
Descripción: Cancela un plazo fijo antes de su vencimiento (sin intereses).
Descripción: Solicita un nuevo préstamo personal.
Request Body:
{
"monto": 200000.00,
"cuotas": 12,
"cuenta_destino": "ACC001"
}
Validaciones:
Cálculo de Cuota:
TNA = 65% (fija)
Cuota = (Monto × (1 + TNA × Meses/12)) / Cuotas
Descripción: Lista los préstamos activos del usuario.
Descripción: Realiza el pago de un servicio.
Request Body:
{
"id_servicio": "SRV001",
"monto": 8500.00,
"id_cuenta": "ACC001"
}
Servicios Disponibles:
| ID | Servicio | Empresa | Monto Sugerido |
|---|---|---|---|
SRV001 |
Electricidad | Edenor | $8,500.00 |
SRV002 |
Gas Natural | MetroGAS | $4,200.00 |
SRV003 |
Agua | AySA | $2,800.00 |
SRV004 |
Internet | Fibertel | $12,000.00 |
SRV005 |
Telefonía | Personal | $6,500.00 |
Descripción: Lista todos los servicios disponibles para pago.
Descripción: Genera una nueva tarjeta virtual Visa.
Request Body:
{
"id_cuenta_asociada": "ACC001"
}
Validaciones:
Datos Generados:
Descripción: Lista las tarjetas virtuales activas del usuario.
Descripción: Elimina una tarjeta virtual.
Descripción: Obtiene el historial de transacciones del usuario.
Parámetros Opcionales:
limit: Cantidad de transacciones (default: 10)Descripción: Reinicia todos los datos del usuario a su estado inicial.
| Operación | Límite | Tipo |
|---|---|---|
| Transferencia individual | $50,000.00 | Por transacción |
| Transferencias acumuladas | $100,000.00 | Diario |
| Plazo fijo mínimo | $1,000.00 | Por operación |
| Plazos fijos activos | 5 | Simultáneos |
| Préstamo mínimo | $10,000.00 | Por solicitud |
| Préstamo máximo | $500,000.00 | Por solicitud |
| Préstamos activos | 3 | Simultáneos |
Para simular condiciones reales, cada endpoint incluye un delay artificial:
SolicitudTransferencia {
cuenta_origen: string (required)
cuenta_destino: string (required)
monto: float (required, > 0)
motivo: string (optional)
tipo: "propia" | "terceros" (required)
}
SolicitudPlazoFijo {
cuenta_origen: string (required)
monto: float (required, > 0)
plazo_dias: 30 | 60 | 90 | 180 | 360 (required)
}
SolicitudPrestamo {
monto: float (required, > 0)
cuotas: 6 | 12 | 18 | 24 | 36 | 48 (required)
cuenta_destino: string (required)
}
{
"exito": false,
"error": "CODIGO_ERROR",
"mensaje": "Descripción legible del error"
}
| Código HTTP | Código Error | Descripción |
|---|---|---|
| 200 | - | Operación exitosa |
| 400 | MONTO_INVALIDO | Monto fuera de rango permitido |
| 400 | CUENTA_INVALIDA | Cuenta no existe o no pertenece al usuario |
| 400 | FONDOS_INSUFICIENTES | Saldo insuficiente para la operación |
| 400 | LIMITE_EXCEDIDO | Límite operacional superado |
| 401 | UNAUTHORIZED | Token inválido o expirado |
| 404 | NOT_FOUND | Recurso no encontrado |
| 500 | INTERNAL_ERROR | Error interno del servidor |