DELETE /apiv2/subuserdel/
ลบผู้ใช้ย่อย (SUB-user) และระเบียนข้อมูลที่เกี่ยวข้องทั้งหมด ประวัติการทำรายการ (คำสั่งซื้อ, การมอบหมาย) จะถูกโอนย้ายไปยังผู้ใช้หลัก เฉพาะบัญชีหลักหรือผู้ดูแลระบบเท่านั้นที่สามารถลบ SUB-user ได้
URL ของ Endpoint
DELETE https://netts.io/apiv2/subuserdel/{user_id}Path พารามิเตอร์
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | integer | ใช่ | ID ของ SUB-user ที่ต้องการลบ |
Headers ของคำขอ
| Header | Required | Description |
|---|---|---|
| X-API-KEY | ใช่ | API key ของคุณ (ต้องเป็นคีย์ของผู้ใช้หลัก) |
| X-Real-IP | ใช่ | ที่อยู่ IP จากรายการที่อนุญาต (whitelist) ของคุณ |
การยืนยันตัวตนและการอนุญาตสิทธิ์
Endpoint นี้ต้องการทั้ง การยืนยันตัวตน (Authentication) และ การอนุญาตสิทธิ์ (Authorization):
- การยืนยันตัวตน: API key ที่ถูกต้อง + IP จาก whitelist (เช่นเดียวกับ endpoint อื่นๆ)
- การอนุญาตสิทธิ์: เฉพาะ ผู้ใช้หลัก (parent user) (ผู้ที่สร้าง SUB-user) เท่านั้นที่สามารถลบ SUB-user ของตนเองได้
หากผู้ใช้พยายามลบ SUB-user ที่ไม่ได้เป็นของตนเอง คำขอจะถูกปฏิเสธด้วย 403 Forbidden
ตัวอย่างคำขอ
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";
?>การตอบกลับ
การตอบกลับเมื่อสำเร็จ (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."
}ฟิลด์การตอบกลับ
| Field | Type | Description |
|---|---|---|
| user_id | integer | ID ของ SUB-user ที่ถูกลบ |
| google_id | string | Google ID ของ SUB-user ที่ถูกลบ |
| parent_user_id | integer | ID ของผู้ใช้หลัก (ประวัติการทำรายการถูกโอนย้ายไปยังผู้ใช้นี้) |
| total_reassigned | integer | จำนวนประวัติการทำรายการทั้งหมดที่ถูกโอนย้าย |
| total_deleted | integer | จำนวนระเบียนข้อมูลทั้งหมดที่ถูกลบ |
| message | string | ข้อความสรุป |
กลไกการทำงานของการลบข้อมูล
การลบจะดำเนินการแบบ atomic ภายในธุรกรรมเดียว (single transaction):
- การโอนย้ายประวัติข้อมูล — ประวัติคำสั่งซื้อและการมอบหมายทั้งหมดของ SUB-user จะถูกโอนย้ายไปยังผู้ใช้หลัก ข้อมูลธุรกรรมจะไม่มีการสูญหาย
- การล้างระเบียนข้อมูล — ระเบียนข้อมูลเฉพาะของ SUB-user (API key, การตั้งค่า, ข้อมูล referral, ที่อยู่สำหรับฝากเงิน) จะถูกลบออก
- บันทึกการตรวจสอบ (Audit trail) — บันทึกประวัติการลบจะถูกจัดเก็บไว้เพื่อวัตถุประสงค์ในการติดตามย้อนหลัง
การป้องกันความปลอดภัย
- ลบได้เฉพาะ SUB-user เท่านั้น — บัญชีผู้ใช้จริงได้รับการปกป้องและไม่สามารถลบผ่าน endpoint นี้ได้
- จำเป็นต้องมีการอนุญาตสิทธิ์ — เฉพาะผู้ใช้หลักเท่านั้นที่สามารถลบ SUB-user ของตนเองได้
- ความปลอดภัยของธุรกรรม — การทำงานทั้งหมดจะดำเนินการภายใต้ฐานข้อมูลธุรกรรมเดียว (สำเร็จทั้งหมดหรือไม่ก็ยกเลิกทั้งหมด)
- ประวัติข้อมูลได้รับการเก็บรักษา — ประวัติคำสั่งซื้อและการมอบหมายจะถูกโอนย้ายไปยังผู้ใช้หลัก และจะไม่สูญหาย
การตอบกลับเมื่อเกิดข้อผิดพลาด
คำขอไม่ถูกต้อง (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."
}การเข้าถึงถูกปฏิเสธ (403)
json
{
"detail": "Not authorized: you can only delete your own SUB-users."
}ข้อผิดพลาดในการยืนยันตัวตน (401)
json
{
"detail": "X-API-KEY header required"
}ข้อผิดพลาดภายในเซิร์ฟเวอร์ (500)
json
{
"detail": "Failed to delete mock user: ..."
}ข้อมูลอ้างอิงรหัสข้อผิดพลาด
| HTTP Status | Description |
|---|---|
200 | ลบ SUB-user สำเร็จ |
400 | ไม่พบผู้ใช้ หรือไม่ใช่ SUB-user |
401 | ไม่มีส่วนหัว API key |
403 | ไม่ได้รับอนุญาต (ไม่ใช่ผู้ใช้หลัก) / API key หรือ IP ไม่ถูกต้อง |
500 | ข้อผิดพลาดภายในเซิร์ฟเวอร์ |
หมายเหตุ
- การลบข้อมูลไม่สามารถย้อนกลับได้ — โปรดตรวจสอบให้แน่ใจว่าคุณต้องการลบ SUB-user ก่อนเรียกใช้ endpoint นี้
- ประวัติทั้งหมดของ SUB-user (คำสั่งซื้อ, การมอบหมาย) จะถูกโอนย้ายไปยังผู้ใช้หลัก — ข้อมูลจะไม่สูญหาย
- บันทึกการลบจะถูกจัดเก็บไว้อย่างถาวรในตารางตรวจสอบ (audit table) ของฐานข้อมูล
- บันทึกรายได้จากค่าคอมมิชชั่น (Referral earnings) จะไม่ได้รับผลกระทบจากการลบ
- หาก SUB-user มียอดคงเหลือที่ไม่เป็นศูนย์ ยอดเงินดังกล่าวจะไม่ถูกโอนย้ายโดยอัตโนมัติ — โปรดทำการถอนออกก่อนดำเนินการลบ
- สามารถสร้าง SUB-user ใหม่ได้อีกครั้งผ่าน endpoint POST /apiv2/subusergen
Endpoints ที่เกี่ยวข้อง
- POST /apiv2/subusergen — สร้าง SUB-user ใหม่
- POST /apiv2/address/rotate — สลับเปลี่ยนที่อยู่สำหรับฝากเงิน
- GET /apiv2/userinfo — รับข้อมูลผู้ใช้/SUB-user