DELETE /apiv2/subuserdel/
ایک SUB-user اور اس سے متعلقہ تمام ریکارڈز کو حذف کریں۔ ہسٹری کے ریکارڈز (آرڈرز، ڈیلیگیشنز) پیرنٹ صارف کے نام دوبارہ تفویض کر دیے جاتے ہیں۔ صرف پیرنٹ اکاؤنٹ یا ایڈمنسٹریٹر ہی SUB-user کو حذف کر سکتا ہے۔
اینڈپوائنٹ URL
DELETE https://netts.io/apiv2/subuserdel/{user_id}پاتھ پیرامیٹرز
| پیرامیٹر | قسم | درکار ہے | تفصیل |
|---|---|---|---|
| user_id | integer | ہاں | حذف کیے جانے والے SUB-user کا ID |
ریکویسٹ ہیڈرز
| ہیڈر | درکار ہے | تفصیل |
|---|---|---|
| X-API-KEY | ہاں | آپ کی API کی (لازمی ہے کہ پیرنٹ صارف کی کی ہو) |
| X-Real-IP | ہاں | آپ کی وائٹ لسٹ سے IP ایڈریس |
تصدیق اور اجازت
اس اینڈپوائنٹ کے لیے تصدیق (authentication) اور اجازت (authorization) دونوں درکار ہیں:
- تصدیق: درست API کی + وائٹ لسٹ سے IP (دیگر اینڈپوائنٹس کی طرح)
- اجازت: صرف پیرنٹ صارف (جس نے SUB-user بنایا تھا) ہی اپنے SUB-users کو حذف کر سکتا ہے
اگر کوئی صارف کسی ایسے 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."
}رسپانس فیلڈز
| فیلڈ | قسم | تفصیل |
|---|---|---|
| user_id | integer | حذف شدہ SUB-user کا ID |
| google_id | string | حذف شدہ SUB-user کا Google ID |
| parent_user_id | integer | پیرنٹ صارف کا ID (ہسٹری اس صارف کو دوبارہ تفویض کی گئی ہے) |
| total_reassigned | integer | دوبارہ تفویض کیے گئے ہسٹری ریکارڈز کی کل تعداد |
| total_deleted | integer | حذف شدہ ریکارڈز کی کل تعداد |
| message | string | خلاصہ پیغام |
حذف کرنے کا عمل کیسے کام کرتا ہے
حذف کرنے کا عمل ایک ہی ٹرانزیکشن میں ایٹمی طور پر انجام دیا جاتا ہے:
- ہسٹری کی دوبارہ تفویض — SUB-user کے تمام آرڈر اور ڈیلیگیشن ہسٹری پیرنٹ صارف کو دوبارہ تفویض کر دی جاتی ہے۔ کوئی ٹرانزیکشن ڈیٹا ضائع نہیں ہوتا ہے۔
- ریکارڈز کی صفائی — SUB-user کے مخصوص ریکارڈز (API کی، سیٹنگز، ریفرل ڈیٹا، ڈپازٹ ایڈریس) ہٹا دیے جاتے ہیں۔
- آڈٹ ٹریل — ٹریکنگ کے مقاصد کے لیے حذف کرنے کا ریکارڈ محفوظ کر لیا جاتا ہے۔
حفاظتی تدابیر
- صرف SUB-users کو ہی حذف کیا جا سکتا ہے — حقیقی صارف اکاؤنٹس محفوظ ہیں اور اس اینڈپوائنٹ کے ذریعے حذف نہیں کیے جا سکتے
- اجازت درکار ہے — صرف پیرنٹ صارف ہی اپنے SUB-users کو حذف کر سکتا ہے
- ٹرانزیکشن کی حفاظت — تمام آپریشنز ڈیٹا بیس کے ایک ہی ٹرانزیکشن میں چلتے ہیں (سب کچھ یا کچھ بھی نہیں)
- ہسٹری محفوظ رہتی ہے — آرڈر اور ڈیلیگیشن ہسٹری پیرنٹ کو دوبارہ تفویض کی جاتی ہے، ضائع نہیں ہوتی
خرابی کے رسپانسز
غلط ریکویسٹ (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 اسٹیٹس | تفصیل |
|---|---|
200 | SUB-user کامیابی کے ساتھ حذف ہو گیا |
400 | صارف نہیں ملا یا SUB-user نہیں ہے |
401 | گمشدہ API کی ہیڈر |
403 | مجاز نہیں ہے (پیرنٹ صارف نہیں ہے) / غلط API کی یا IP |
500 | اندرونی سرور کی خرابی |
نوٹس
- حذف کرنا ناقابل واپسی ہے — اس اینڈپوائنٹ کو کال کرنے سے پہلے یقینی بنائیں کہ آپ SUB-user کو ہٹانا چاہتے ہیں
- تمام SUB-user ہسٹری (آرڈرز، ڈیلیگیشنز) پیرنٹ کو دوبارہ تفویض کر دی جاتی ہے — کوئی ڈیٹا ضائع نہیں ہوتا
- حذف کرنے کا ریکارڈ ڈیٹا بیس کے آڈٹ ٹیبل میں مستقل طور پر محفوظ رہتا ہے
- ریفرل آمدنی کے ریکارڈز حذف کرنے سے متاثر نہیں ہوتے
- اگر SUB-user کا بیلنس صفر کے علاوہ ہے، تو یہ خود بخود منتقل نہیں ہوتا — حذف کرنے سے پہلے رقم نکال لیں
- SUB-users کو POST /apiv2/subusergen اینڈپوائنٹ کے ذریعے دوبارہ بنایا جا سکتا ہے
متعلقہ اینڈپوائنٹس
- POST /apiv2/subusergen — نیا SUB-user بنائیں
- POST /apiv2/address/rotate — ڈپازٹ ایڈریس تبدیل (rotate) کریں
- GET /apiv2/userinfo — صارف/SUB-user کی معلومات حاصل کریں