Aprende cómo eliminar backups a través de nuestra API
curl -X DELETE "https://backup-server.x10.mx/api/backups" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"ids": [123, 456, 789]
}'
Descripción: Elimina uno o varios backups especificando sus IDs numéricos.
Parámetros:
-X DELETE: Método HTTP DELETEids: Array de IDs numéricos de backups-d: Envía datos en formato JSONRespuesta exitosa (200):
{
"success": true,
"message": "Eliminados 3 backups correctamente",
"data": {
"deleted": 3,
"failed": 0
}
}
Ventaja: Los IDs son únicos y permanentes. Ideal cuando conoces el ID exacto del backup a eliminar.
curl -X DELETE "https://backup-server.x10.mx/api/backups" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"filenames": [
"2025-11-24T10-30-00_client.txt",
"backup_old.txt"
]
}'
Descripción: Elimina backups especificando sus nombres de archivo exactos.
Parámetros:
filenames: Array de nombres de archivo✓ Los nombres deben coincidir exactamente✓ Validación automática de nombresRespuesta exitosa (200):
{
"success": true,
"message": "Eliminados 2 backups correctamente",
"data": {
"deleted": 2,
"failed": 0
}
}
Importante: Los nombres deben escribirse exactamente como aparecen en el listado, incluyendo la extensión del archivo.
curl -X DELETE "https://backup-server.x10.mx/api/backups" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"ids": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
}'
Descripción: Elimina múltiples backups en una sola operación. Útil para limpieza masiva de backups antiguos o innecesarios.
Ventajas:
Respuesta con resultados mixtos:
{
"success": true,
"message": "Eliminados 12 backups correctamente",
"data": {
"deleted": 12,
"failed": 3,
"errors": [
"No se encontró o no se pudo eliminar: backup1.txt"
]
}
}
Seguridad: Solo puedes eliminar tus propios backups. Los IDs que no te pertenezcan serán ignorados automáticamente.
¡Precaución! Esta operación es irreversible. Asegúrate de tener respaldo de los datos importantes antes de eliminar.
import requests
url = "https://backup-server.x10.mx/api/backups"
headers = {
"Authorization": "Bearer <API_KEY>",
"Content-Type": "application/json"
}
payload = {
"ids": [123, 456, 789]
}
response = requests.delete(url, headers=headers, json=payload)
print(response.json())
Descripción: Elimina backups especificando sus IDs numéricos usando la librería requests de Python.
Parámetros clave:
requests.delete(): Método HTTP DELETEjson=payload: Serializa automáticamente a JSONheaders: Incluye autenticación BearerRespuesta exitosa:
{
"success": True,
"message": "Eliminados 3 backups correctamente",
"data": {
"deleted": 3,
"failed": 0
}
}
Ventaja: La librería requests maneja automáticamente la serialización JSON y los headers HTTP.
import requests
url = "https://backup-server.x10.mx/api/backups"
headers = {
"Authorization": "Bearer <API_KEY>",
"Content-Type": "application/json"
}
payload = {
"filenames": [
"2025-11-24T10-30-00_client.txt",
"backup_old.txt"
]
}
response = requests.delete(url, headers=headers, json=payload)
print(response.json())
Descripción: Elimina backups usando sus nombres de archivo exactos con requests de Python.
Consideraciones:
✓ Nombres deben coincidir exactamente con el servidor✓ Incluir extensión del archivo✓ Sensible a mayúsculas/minúsculasRespuesta exitosa:
{
"success": True,
"message": "Eliminados 2 backups correctamente",
"data": {
"deleted": 2,
"failed": 0
}
}
Importante: Usa listas de Python para múltiples nombres. Los nombres deben estar entre comillas dobles en el JSON final.
import requests
url = "https://backup-server.x10.mx/api/backups"
headers = {
"Authorization": "Bearer <API_KEY>",
"Content-Type": "application/json"
}
payload = {
"ids": list(range(1, 101)) # IDs del 1 al 100
}
response = requests.delete(url, headers=headers, json=payload)
result = response.json()
print(f"Eliminados: {result['data']['deleted']}")
print(f"Fallas: {result['data']['failed']}")
Descripción: Elimina múltiples backups en una sola operación usando capacidades de Python para generar listas dinámicas.
Características Python:
range()Manejo de respuestas:
if result["success"]:
print(f"✅ Operación exitosa: {result['message']}")
else:
print(f"❌ Error: {result['error']}")
Mejor práctica: Siempre verifica response.status_code antes de procesar la respuesta JSON.
¡Precaución! Usa try/except para manejar posibles errores de red o tiempo de espera.
const axios = require('axios');
const deleteBackupsByIds = async () => {
try {
const response = await axios.delete(
"https://backup-server.x10.mx/api/backups",
{
headers: {
"Authorization": `Bearer <API_KEY>`,
"Content-Type": "application/json"
},
data: {
ids: [123, 456, 789]
}
}
);
console.log('Respuesta:', response.data);
return response.data;
} catch (error) {
console.error('Error:', error.response?.data || error.message);
throw error;
}
};
// Ejecutar la función
deleteBackupsByIds();
Descripción: Elimina backups especificando sus IDs numéricos usando Axios en Node.js con manejo asíncrono.
Características Axios:
axios.delete(): Método DELETE con cuerpo de solicitudasync/await: Manejo limpio de operaciones asíncronastry/catch: Manejo estructurado de erroresRespuesta exitosa:
{
success: true,
message: "Eliminados 3 backups correctamente",
data: {
deleted: 3,
failed: 0
}
}
Ventaja: Axios transforma automáticamente los datos JSON y maneja los headers HTTP de forma intuitiva.
const axios = require('axios');
const deleteBackupsByNames = async () => {
const filenames = [
"2025-11-24T10-30-00_client.txt",
"backup_old.txt"
];
try {
const response = await axios.delete(
"https://backup-server.x10.mx/api/backups",
{
headers: {
"Authorization": `Bearer <API_KEY>`,
"Content-Type": "application/json"
},
data: { filenames }
}
);
console.log(`✅ Eliminados ${response.data.data.deleted} backups`);
return response.data;
} catch (error) {
if (error.response?.status === 404) {
console.error('❌ Algunos archivos no existen');
}
console.error('Error detallado:', error.response?.data);
throw error;
}
};
// Ejecutar la función
deleteBackupsByNames();
Descripción: Elimina backups usando sus nombres de archivo exactos con Axios en un entorno Node.js.
Buenas prácticas:
const filenames: Separar datos de la lógica para mejor mantenimientoerror.response?.status: Manejo seguro de respuestas de errorerror.response?.data: Acceso seguro a datos de errorRespuesta con errores parciales:
{
success: true,
message: "Eliminados 1 backups correctamente",
data: {
deleted: 1,
failed: 1,
errors: ["No se encontró: backup_old.txt"]
}
}
Importante: En Node.js, los nombres de archivo son sensibles a mayúsculas/minúsculas y deben coincidir exactamente con el servidor.
const axios = require('axios');
const deleteBackupsBulk = async () => {
// Generar IDs del 1 al 200
const ids = Array.from({ length: 200 }, (_, i) => i + 1);
// Configuración para peticiones grandes
const config = {
headers: {
"Authorization": `Bearer <API_KEY>`,
"Content-Type": "application/json"
},
data: { ids },
timeout: 30000 // 30 segundos para operaciones masivas
};
try {
console.log(`🚀 Iniciando eliminación de ${ids.length} backups...`);
const response = await axios.delete(
"https://backup-server.x10.mx/api/backups",
config
);
const { deleted, failed } = response.data.data;
console.log(`✅ Operación completada: ${deleted} eliminados, ${failed} fallidos`);
if (failed > 0) {
console.warn('⚠️ Algunos backups no pudieron eliminarse:');
response.data.data.errors.forEach(err => console.warn(` - ${err}`));
}
return response.data;
} catch (error) {
if (error.code === 'ECONNABORTED') {
console.error('❌ Timeout: La operación masiva tardó demasiado');
} else if (error.response?.status === 413) {
console.error('❌ Error 413: Demasiados IDs en una sola petición');
console.log('💡 Sugerencia: Divide la operación en lotes de 50 IDs');
}
throw error;
}
};
// Ejecutar la función
deleteBackupsBulk();
Descripción: Elimina múltiples backups en una sola operación con técnicas avanzadas de manejo de errores y configuración específica para operaciones masivas.
Técnicas avanzadas:
Array.from()Manejo de lotes (recomendado):
// Función para dividir en lotes de 50
const chunkArray = (arr, size) =>
Array.from({length: Math.ceil(arr.length/size)}, (_, i) =>
arr.slice(i*size, (i+1)*size)
);
// Uso:
const batches = chunkArray(allIds, 50);
for (const batch of batches) {
await deleteBatch(batch);
}
Seguridad: Usa variables de entorno para almacenar tu API key: process.env.API_KEY en lugar de hardcodearla.
¡Precaución! Las operaciones masivas pueden causar alta carga en el servidor. Usa timeout y manejo de errores para evitar bloqueos.
-L permite seguir redirecciones automáticas.
Accede a tus backups o explora la documentación completa