CRÍTICO: Las operaciones DELETE en esta API son permanentes e inmediatas. Los datos relacionados se eliminan automáticamente (CASCADE) o se desvinculan (SET NULL) según las relaciones de la base de datos. Estas operaciones no se pueden deshacer.
¿Qué son las Eliminaciones CASCADE?
Las eliminaciones CASCADE son operaciones de base de datos que eliminan o modifican automáticamente los registros relacionados cuando se elimina un registro padre. Esto garantiza la integridad de los datos al prevenir registros huérfanos.
Puntos Clave:
- ✅ Previene datos huérfanos
- ⚠️ No se puede deshacer
- 📊 Las respuestas incluyen
warningsmostrando lo que fue afectado - 🚨 Algunas operaciones (Cuentas, Grupos de Etiquetas, Estrategias) eliminan grandes cantidades de datos
Cómo Funcionan las Eliminaciones CASCADE
Cuando eliminas un recurso a través de la API:
- La base de datos valida la operación de eliminación
- Las reglas CASCADE automáticamente eliminan registros relacionados
- Las reglas SET NULL automáticamente desvinculan referencias en otros registros
- La respuesta de la API incluye advertencias sobre lo que fue afectado
Ejemplo de Respuesta DELETE
{
"success": true,
"message": "Trade deleted successfully",
"warnings": [
"3 execution(s) deleted",
"1 trade write-up(s) deleted",
"2 tag association(s) deleted"
]
}
Impacto por Recurso
🚨 Operaciones de ALTO RIESGO
Estas eliminaciones afectan grandes cantidades de datos y deben realizarse con extrema precaución.
Eliminar una Cuenta
ELIMINARÁ (CASCADE):
- Todos los trades asociados con la cuenta
- Todas las ejecuciones de esos trades
- Todos los pagos de la cuenta
- Todos los documentos de la cuenta
- Todas las asociaciones de etiquetas
Cascade Delete Warning
Eliminar una cuenta eliminará permanentemente todo el historial de trading, ejecuciones, pagos y documentos asociados con esa cuenta. Esta operación afecta potencialmente cientos o miles de registros.
Antes de eliminar una cuenta:
- Exportar todos los datos de trading
- Descargar todos los documentos
- Verificar que tienes respaldos
- Considerar archivar en lugar de eliminar
Eliminar un Grupo de Etiquetas
ELIMINARÁ (CASCADE):
- Todas las etiquetas dentro del grupo
- Todas las asociaciones de etiquetas en todos los recursos (trades, write-ups, planes, estrategias, etc.)
Cascade Delete Warning
Eliminar un grupo de etiquetas eliminará todas las etiquetas en ese grupo y removerá esas etiquetas de todos los trades, write-ups, estrategias, playbooks, report cards, chart books, trade plans y cuentas donde fueron aplicadas.
⚠️ Operaciones de RIESGO MEDIO
Estas operaciones afectan cantidades moderadas de datos y recursos relacionados.
Eliminar un Trade
ELIMINARÁ (CASCADE):
- Todas las ejecuciones del trade
- Trade write-up asociado (si existe)
- Todas las asociaciones de etiquetas
ESTABLECERÁ NULL:
- Ninguno (las ejecuciones pertenecen completamente al trade)
Eliminar una Estrategia
ELIMINARÁ (CASCADE):
- Todas las reglas de estrategia
- Todas las asociaciones playbook-estrategia
- Todas las asociaciones chart book-estrategia
- Todas las asociaciones write-up-estrategia
- Todas las asociaciones de etiquetas
ESTABLECERÁ NULL:
- Referencias de trade groups a esta estrategia
- Referencias de ejecuciones a esta estrategia
- Referencias de chart books a esta estrategia
Eliminar un Playbook
ELIMINARÁ (CASCADE):
- Criterios del playbook
- Asociaciones playbook-estrategia
- Asociaciones de etiquetas
- Asociaciones trade plan-playbook
- Asociaciones trade writeup-playbook
ESTABLECERÁ NULL:
- Referencias de trade groups al playbook
- Referencias de chart books al playbook
Eliminar una Etiqueta
ELIMINARÁ (CASCADE):
- Todas las asociaciones de esta etiqueta (en trades, write-ups, planes, estrategias, etc.)
✅ Operaciones de BAJO RIESGO
Estas operaciones tienen efectos cascade mínimos.
Eliminar un Plan de Trading
ELIMINARÁ (CASCADE):
- Asociaciones trade plan-playbook
- Asociaciones de etiquetas
Eliminar un Trade Write-up
ELIMINARÁ (CASCADE):
- Asociaciones trade writeup-playbook
- Asociaciones trade writeup-estrategia
- Asociaciones de etiquetas
Eliminar un Report Card
ELIMINARÁ (CASCADE):
- Asociaciones de etiquetas
Eliminar un Chart Book
ELIMINARÁ (CASCADE):
- Asociaciones chart book-estrategia
- Asociaciones de etiquetas
Eliminar un Pago
ACTUALIZARÁ:
- Los totales de pagos de la cuenta se recalcularán
- El balance de la cuenta se ajustará
Eliminar un Documento
ELIMINARÁ:
- Archivo asociado del almacenamiento
La API te advertirá si el archivo fue removido del almacenamiento. Si la eliminación del archivo falla, el registro de la base de datos aún se elimina.
Tabla Completa de Relaciones CASCADE
Mejores Prácticas
Antes de Eliminar
- Consultar el recurso primero para entender qué está vinculado
- Leer las advertencias cascade en la respuesta de la API
- Respaldar datos críticos si eliminas recursos de alto riesgo
- Probar en desarrollo antes de eliminaciones en producción
- Considerar alternativas como archivar en lugar de eliminar
Para Operaciones de Alto Riesgo
# ANTES de eliminar una cuenta, verifica lo que será afectado
curl -X GET "https://api.mypropjournal.com/api/v1/accounts/ACCOUNT_ID?include=performance" \
-H "Authorization: Bearer YOUR_API_KEY"
# Revisar: conteo de trades, conteo de pagos, conteo de documentos
# Exportar datos si es necesario
curl -X GET "https://api.mypropjournal.com/api/v1/trades?account_id=ACCOUNT_ID&limit=1000" \
-H "Authorization: Bearer YOUR_API_KEY" > trades_backup.json
# Solo entonces proceder con la eliminación
curl -X DELETE "https://api.mypropjournal.com/api/v1/accounts/ACCOUNT_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
Implementando en tu Aplicación
Siempre registra los impactos cascade para fines de auditoría:
async function deleteResource(endpoint, id) {
try {
const response = await fetch(
`https://api.mypropjournal.com/api/v1/${endpoint}/${id}`,
{
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` }
}
);
const result = await response.json();
if (result.success) {
// Registrar impacto cascade
if (result.warnings && result.warnings.length > 0) {
console.warn('IMPACTO DELETE CASCADE:', {
resource: endpoint,
id,
warnings: result.warnings,
timestamp: new Date().toISOString()
});
// Notificar al usuario
if (result.warnings.length > 5) {
alert(`Advertencia: Esta eliminación afectó ${result.warnings.length} elementos relacionados.`);
}
}
return result;
} else {
throw new Error(result.error?.message || 'Eliminación falló');
}
} catch (error) {
console.error('Eliminación falló:', error);
throw error;
}
}
Lista de Verificación de Seguridad
Antes de realizar operaciones DELETE en producción:
- ✓ He revisado lo que será eliminado
- ✓ Entiendo que las eliminaciones son permanentes
- ✓ He respaldado datos críticos (si aplica)
- ✓ He probado esta operación en desarrollo
- ✓ He implementado manejo de errores para advertencias
- ✓ Mi aplicación registra impactos cascade para auditoría
Escenarios Comunes
Escenario 1: Limpiando Datos Antiguos
Objetivo: Remover trades de demostración antiguos sin afectar datos reales
# Paso 1: Consultar trades de demo
curl -X GET "https://api.mypropjournal.com/api/v1/trades?tags=demo&limit=100" \
-H "Authorization: Bearer YOUR_API_KEY"
# Paso 2: Eliminar cada trade (advertencias mostrarán ejecuciones eliminadas)
curl -X DELETE "https://api.mypropjournal.com/api/v1/trades/TRADE_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
Escenario 2: Reorganizando Estrategias
Objetivo: Eliminar estrategia antigua y actualizar referencias
# Paso 1: Verificar qué usa esta estrategia
curl -X GET "https://api.mypropjournal.com/api/v1/strategies/STRATEGY_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
# Paso 2: Actualizar trades para usar nueva estrategia (opcional)
curl -X PUT "https://api.mypropjournal.com/api/v1/trades/TRADE_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"strategy_id": "NEW_STRATEGY_ID"}'
# Paso 3: Eliminar estrategia antigua (SET NULL desvinculará referencias restantes)
curl -X DELETE "https://api.mypropjournal.com/api/v1/strategies/STRATEGY_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
Escenario 3: Archivar en Lugar de Eliminar
Para cuentas, usa el flag de archivo en lugar de eliminar:
# Archivar cuenta (preserva todos los datos)
curl -X PUT "https://api.mypropjournal.com/api/v1/accounts/ACCOUNT_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"archived": true}'
# Listar solo cuentas activas
curl -X GET "https://api.mypropjournal.com/api/v1/accounts?archived=active" \
-H "Authorization: Bearer YOUR_API_KEY"
Recuperación de Errores
Si Eliminas Datos Accidentalmente
NO HAY deshacer para operaciones DELETE. Los datos se eliminan permanentemente de la base de datos.
La prevención es clave:
- Siempre probar eliminaciones en desarrollo primero
- Exportar/respaldar antes de eliminaciones masivas
- Usar funciones de archivo cuando estén disponibles
- Implementar diálogos de confirmación en tu UI
- Requerir permisos elevados para eliminaciones de alto riesgo
Documentación Relacionada
- API de Trades - Advertencias de eliminación de trades
- API de Estrategias - Advertencias de eliminación de estrategias
- API de Playbooks - Advertencias de eliminación de playbooks
- API de Cuentas - Gestión de cuentas
- API de Etiquetas - Gestión de etiquetas y grupos de etiquetas
¿Preguntas? Si necesitas aclaración sobre el comportamiento CASCADE para un recurso específico, consulta la documentación del endpoint individual o contacta al soporte.