← Volver al Hub

ESPECIFICACIÓN FUNCIONAL

API de Homebanking - Documento de Requisitos Funcionales

1. Introducción

1.1 Propósito del Documento

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.

1.2 Audiencia

1.3 Tecnologías Utilizadas

2. Alcance del Sistema

2.1 Funcionalidades Incluidas

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

2.2 Funcionalidades Excluidas

ℹ️ Nota: Este sistema es un mock diseñado exclusivamente para pruebas de QA. No debe utilizarse en entornos productivos ni con datos reales.

3. Perfiles de Usuario

3.1 Usuario Demo

Campo Valor
Username demo
Nombre Completo Juan Pérez
DNI 12.345.678
Email juan.perez@email.com
Teléfono +54 11 1234-5678
Dirección Av. Corrientes 1234, CABA, Argentina

3.2 Cuentas Asociadas

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

4. Módulos Funcionales

4.1 Módulo de Cliente

GET /cliente/dashboard

GET /cliente/dashboard

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": [...]
}

GET /cliente/datos

GET /cliente/datos

Descripción: Obtiene únicamente los datos personales del cliente.

4.2 Módulo de Transferencias

POST /transferencias/

POST /transferencias/

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

GET /transferencias/beneficiarios

GET /transferencias/beneficiarios

Descripción: Lista los beneficiarios guardados del usuario.

GET /transferencias/limites

GET /transferencias/limites

Descripción: Obtiene los límites de transferencia configurados.

4.3 Módulo de Plazos Fijos

POST /plazos-fijos/

POST /plazos-fijos/

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)

GET /plazos-fijos/

GET /plazos-fijos/

Descripción: Lista los plazos fijos activos del usuario.

DELETE /plazos-fijos/{id}

DELETE /plazos-fijos/{id}

Descripción: Cancela un plazo fijo antes de su vencimiento (sin intereses).

4.4 Módulo de Préstamos

POST /prestamos/

POST /prestamos/

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

GET /prestamos/

GET /prestamos/

Descripción: Lista los préstamos activos del usuario.

4.5 Módulo de Pagos

POST /pagos/

POST /pagos/

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

GET /pagos/servicios

GET /pagos/servicios

Descripción: Lista todos los servicios disponibles para pago.

4.6 Módulo de Tarjetas Virtuales

POST /tarjetas/virtuales

POST /tarjetas/virtuales

Descripción: Genera una nueva tarjeta virtual Visa.

Request Body:

{
  "id_cuenta_asociada": "ACC001"
}

Validaciones:

Datos Generados:

GET /tarjetas/virtuales

GET /tarjetas/virtuales

Descripción: Lista las tarjetas virtuales activas del usuario.

DELETE /tarjetas/virtuales/{card_id}

DELETE /tarjetas/virtuales/{card_id}

Descripción: Elimina una tarjeta virtual.

4.7 Módulo de Transacciones

GET /transacciones/

GET /transacciones/

Descripción: Obtiene el historial de transacciones del usuario.

Parámetros Opcionales:

4.8 Módulo de Sistema

POST /sistema/reset

POST /sistema/reset

Descripción: Reinicia todos los datos del usuario a su estado inicial.

⚠️ Advertencia: Esta operación elimina todas las transacciones, tarjetas virtuales, plazos fijos y préstamos creados durante la sesión, restaurando los saldos iniciales.

5. Reglas de Negocio

5.1 Límites Operacionales

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

5.2 Tiempos de Respuesta Simulados

Para simular condiciones reales, cada endpoint incluye un delay artificial:

6. Modelos de Datos

6.1 Modelo de Transferencia

SolicitudTransferencia {
  cuenta_origen: string (required)
  cuenta_destino: string (required)
  monto: float (required, > 0)
  motivo: string (optional)
  tipo: "propia" | "terceros" (required)
}

6.2 Modelo de Plazo Fijo

SolicitudPlazoFijo {
  cuenta_origen: string (required)
  monto: float (required, > 0)
  plazo_dias: 30 | 60 | 90 | 180 | 360 (required)
}

6.3 Modelo de Préstamo

SolicitudPrestamo {
  monto: float (required, > 0)
  cuotas: 6 | 12 | 18 | 24 | 36 | 48 (required)
  cuenta_destino: string (required)
}

7. Validaciones y Restricciones

7.1 Validaciones de Entrada

7.2 Validaciones de Negocio

8. Manejo de Errores

8.1 Estructura de Respuesta de Error

{
  "exito": false,
  "error": "CODIGO_ERROR",
  "mensaje": "Descripción legible del error"
}

8.2 Códigos de Error Estándar

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

8.3 Mejores Prácticas

📌 Documentación Interactiva: Para probar todos los endpoints en tiempo real, accede a Swagger UI.