DELETE /apiv2/subuserdel/
Elimina un subusuario y todos los registros relacionados. Los registros de historial (órdenes, delegaciones) se reasignan al usuario principal. Solo la cuenta principal o un administrador pueden eliminar un subusuario.
URL del extremo
DELETE https://netts.io/apiv2/subuserdel/{user_id}Parámetros de ruta
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| user_id | integer | Sí | ID del subusuario que se va a eliminar |
Encabezados de solicitud
| Encabezado | Requerido | Descripción |
|---|---|---|
| X-API-KEY | Sí | Su clave de API (debe ser la clave del usuario principal) |
| X-Real-IP | Sí | Dirección IP de su lista blanca |
Autenticación y autorización
Este extremo requiere tanto autenticación como autorización:
- Autenticación: Clave de API válida + IP de la lista blanca (igual que otros extremos)
- Autorización: Solo el usuario principal (quien creó el subusuario) puede eliminar a sus subusuarios
Si un usuario intenta eliminar un subusuario que no le pertenece, la solicitud se rechaza con 403 Forbidden.
Solicitudes de ejemplo
cURL
bash
curl -X DELETE https://netts.io/apiv2/subuserdel/1234 \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"Python
python
import requests
user_id = 1234
url = f"https://netts.io/apiv2/subuserdel/{user_id}"
headers = {
"X-API-KEY": "your_api_key",
"X-Real-IP": "your_whitelisted_ip"
}
response = requests.delete(url, headers=headers)
data = response.json()
if response.status_code == 200:
print(f"Deleted user: {data['user_id']} ({data['google_id']})")
print(f"Parent user: {data['parent_user_id']}")
print(f"Records reassigned: {data['total_reassigned']}")
print(f"Records deleted: {data['total_deleted']}")
print(f"Message: {data['message']}")
else:
print(f"Error ({response.status_code}): {data.get('detail', 'Unknown error')}")Node.js
javascript
const axios = require('axios');
async function deleteSubUser(userId, apiKey, whitelistedIp) {
const url = `https://netts.io/apiv2/subuserdel/${userId}`;
const response = await axios.delete(url, {
headers: {
'X-API-KEY': apiKey,
'X-Real-IP': whitelistedIp
},
timeout: 30000
});
const data = response.data;
console.log(`Deleted: ${data.user_id} (${data.google_id})`);
console.log(`Reassigned: ${data.total_reassigned} rows`);
console.log(`Deleted: ${data.total_deleted} records`);
return data;
}
// Usage
deleteSubUser(1234, 'your_api_key', 'your_whitelisted_ip')
.then(result => console.log('Done:', result.message))
.catch(err => console.error('Error:', err.response?.data || err.message));PHP
php
<?php
$userId = 1234;
$url = "https://netts.io/apiv2/subuserdel/{$userId}";
$options = [
'http' => [
'header' => implode("\r\n", [
"X-API-KEY: your_api_key",
"X-Real-IP: your_whitelisted_ip"
]),
'method' => 'DELETE',
'timeout' => 30
]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$data = json_decode($response, true);
echo "Deleted user: {$data['user_id']} ({$data['google_id']})\n";
echo "Reassigned: {$data['total_reassigned']} rows\n";
echo "Deleted: {$data['total_deleted']} records\n";
echo "Message: {$data['message']}\n";
?>Respuesta
Respuesta exitosa (200 OK)
json
{
"user_id": 1234,
"google_id": "SUB123456789012345678",
"parent_user_id": 42,
"total_reassigned": 787,
"total_deleted": 8,
"message": "Mock user 1234 (SUB123456789012345678) deleted. History (787 rows) reassigned to parent 42."
}Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| user_id | integer | ID del subusuario eliminado |
| google_id | string | Google ID del subusuario eliminado |
| parent_user_id | integer | ID del usuario principal (el historial se reasigna a este usuario) |
| total_reassigned | integer | Cantidad total de registros del historial reasignados |
| total_deleted | integer | Cantidad total de registros eliminados |
| message | string | Mensaje de resumen |
Cómo funciona la eliminación
La eliminación se realiza de forma atómica en una única transacción:
- Reasignación del historial: todo el historial de órdenes y delegaciones del subusuario se reasigna al usuario principal. No se pierde ningún dato de transacciones.
- Limpieza de registros: se eliminan los registros específicos del subusuario (clave de API, configuraciones, datos de referidos, dirección de depósito).
- Registro de auditoría: se guarda un registro de eliminación con fines de seguimiento.
Protecciones de seguridad
- Solo se pueden eliminar subusuarios: las cuentas de usuarios reales están protegidas y no pueden eliminarse a través de este extremo
- Se requiere autorización: solo el usuario principal puede eliminar a sus propios subusuarios
- Seguridad en las transacciones: todas las operaciones se ejecutan en una única transacción de base de datos (todo o nada)
- Historial preservado: el historial de órdenes y delegaciones se reasigna al principal, no se pierde
Respuestas de error
Solicitud incorrecta (400)
json
{
"detail": "User with id=9999 not found"
}json
{
"detail": "User 42 is NOT a mock user (google_id=1234567890). Only users with google_id starting with 'SUB' can be deleted."
}Prohibido (403)
json
{
"detail": "Not authorized: you can only delete your own SUB-users."
}Error de autenticación (401)
json
{
"detail": "X-API-KEY header required"
}Error interno del servidor (500)
json
{
"detail": "Failed to delete mock user: ..."
}Referencia de códigos de error
| Estado HTTP | Descripción |
|---|---|
200 | Subusuario eliminado exitosamente |
400 | Usuario no encontrado o no es un subusuario |
401 | Falta el encabezado de la clave de API |
403 | No autorizado (no es el usuario principal) / Clave de API o IP no válida |
500 | Error interno del servidor |
Notas
- La eliminación es irreversible: asegúrese de que desea eliminar el subusuario antes de llamar a este extremo
- Todo el historial del subusuario (órdenes, delegaciones) se reasigna al principal: no se pierde ningún dato
- El registro de eliminación se almacena de forma permanente en la tabla de auditoría de la base de datos
- Los registros de ganancias por referidos no se ven afectados por la eliminación
- Si el subusuario tiene un saldo distinto de cero, no se transfiere automáticamente: retírelo antes de eliminarlo
- Los subusuarios se pueden crear nuevamente a través del extremo POST /apiv2/subusergen
Extremos relacionados
- POST /apiv2/subusergen — Crear un nuevo subusuario
- POST /apiv2/address/rotate — Rotar dirección de depósito
- GET /apiv2/userinfo — Obtener información de usuario/subusuario