curl -X POST 'https://verification.didit.me/v3/users/delete/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"vendor_data_list": ["user-123", "user-456"]}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.users.batch_delete(
vendor_data_list=["user-123", "user-456"],
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.users.batchDelete({
vendor_data_list: ["user-123", "user-456"],
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Users.BatchDelete(ctx, didit.UsersBatchDeleteParams{
VendorDataList: didit.Some([]string{"user-123", "user-456"}),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.util.List;
import me.didit.Didit;
import me.didit.types.UsersBatchDeleteParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.users().batchDelete(UsersBatchDeleteParams.builder()
.vendorDataList(List.of("user-123", "user-456"))
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->users->batchDelete([
'vendor_data_list' => ['user-123', 'user-456'],
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.users.batch_delete(vendor_data_list: ["user-123", "user-456"])
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Users.BatchDeleteAsync(new UsersBatchDeleteParams
{
VendorDataList = new string[] { "user-123", "user-456" },
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"deleted": 2
}حذف المستخدمين بالجملة عبر API: محو البيانات وفق GDPR
احذف مستخدمي البائع في Didit بالجملة حسب vendor_data، أو احذف كل المستخدمين في التطبيق. متوافق مع حق النسيان بموجب GDPR وCCPA.
curl -X POST 'https://verification.didit.me/v3/users/delete/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"vendor_data_list": ["user-123", "user-456"]}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.users.batch_delete(
vendor_data_list=["user-123", "user-456"],
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.users.batchDelete({
vendor_data_list: ["user-123", "user-456"],
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Users.BatchDelete(ctx, didit.UsersBatchDeleteParams{
VendorDataList: didit.Some([]string{"user-123", "user-456"}),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.util.List;
import me.didit.Didit;
import me.didit.types.UsersBatchDeleteParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.users().batchDelete(UsersBatchDeleteParams.builder()
.vendorDataList(List.of("user-123", "user-456"))
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->users->batchDelete([
'vendor_data_list' => ['user-123', 'user-456'],
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.users.batch_delete(vendor_data_list: ["user-123", "user-456"])
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Users.BatchDeleteAsync(new UsersBatchDeleteParams
{
VendorDataList = new string[] { "user-123", "user-456" },
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"deleted": 2
}نظرة عامة
يحذف مستخدماً واحداً أو أكثر من كيانات المستخدمين. تُزال سجلات المستخدمين نهائياً. لا يشمل هذا endpoint جلسات التحقق الخاصة بهم، فهذه الجلسات تبقى بعد الحذف مع مسح ارتباطها بالمستخدم، واحذفها باستخدام حذف الجلسة أو حذف الجلسات دفعةً واحدة. كما لا تشمل المعاملات، ويمكنك حذفها باستخدام حذف المعاملات دفعةً واحدة.متى تستخدمه
- طلبات الحق في النسيان (GDPR / CCPA).
- تنظيف المستخدمين التجريبيين أثناء ضمان الجودة.
- إلغاء توفير المستخدمين الذين أُزيلوا من منصتك.
ملاحظات
- يقبل قائمة من قيم
vendor_data، أو قائمة من قيمdidit_internal_id، أوdelete_all: true. يمكن دمج القائمتين، وتُجمعان بمنطق OR. - لا يُقيّد هذا endpoint
delete_allبالمرشحات أبداً، وتُرفض معاملات الدُفعاتfilter_*في Console بالاستجابة400، لذلك لا يؤدي الطلب المُقيَّد النطاق إلى حذف كل مستخدمي التطبيق. الاستثناءان هماfilter_has_approved_sessionsوfilter_has_declined_sessions: لا يُرفضان ولا يُطبَّقان، لذا لا ترسلهما معdelete_all. - الكل أو لا شيء: إذا تعذّر إتمام الحذف للمستخدمين الذين اخترتهم، فلن يُحذف أيٌّ منهم، ويمكنك إعادة الطلب نفسه بأمان.
- يتمتع بخاصية idempotency: إعادة إرسال القائمة نفسها تُرجع
deleted: 0بعد التشغيل الأول. - تُرجع عدد ما حُذف فقط، لا تقريراً لكل عنصر. تُتخطى القيم التي لم تطابق أي شيء بصمت. أرسل قائمة خالية من التكرار إذا أردت مقارنة
deletedبعدد المعرّفات التي أرسلتها، لأن المعرّف المكرر يُحسب مرة واحدة فقط. - لا يُصدر أي webhook عند الحذف. تُطلق webhooks عند تغيّر حالة المستخدم وبياناته، لا عند الحذف، لذلك يجب على أي تكامل يحتاج إلى إشارة حذف أن يسجلها على جانبه.
- لا تُحذف جلسات التحقق المرتبطة بالمستخدم بهذا endpoint. تبقى مع مسح ارتباطها بالمستخدم، ولا تُزال مستنداتها ووجوهها ووسائطها إلا عند حذف الجلسات نفسها.
retain_face_embeddings(منطقي، والافتراضيfalse) وface_retention_days(من 1 إلى 3650) هما خيارك الصريح للاحتفاظ بقالب بيومتري واحد خالٍ من الصورة لكل شخص محذوف، لاكتشاف التكرار، لهذا العدد من الأيام. لا يُحتفظ بأي معلومة أخرى عن الشخص. اترك كليهما لحذف القوالب مع المستخدمين. يُرجعface_retention_daysدونretain_face_embeddings: true، أوretain_face_embeddings: trueدونface_retention_days، الاستجابة400علىface_retention_days.- ما لم تضبط
retain_face_embeddingsعلىtrue، فإن القوالب البيومترية المحفوظة المرتبطة بالمستخدم تُمحى فعلاً قبل حذف المستخدم. إذا تعذّر محو قالب لأن مخزناً بيومترياً غير متاح، تُرجع الاستجابة503، ولا يُحذف أي مستخدم في الطلب، وإعادة الطلب تُكمل المهمة.
البيانات في تقرير تنظيمي نهائي
إذا كان أي شخص مختار طرفاً في حالة لها تقرير تنظيمي نهائي، فإن الطلب كله يُرجع409 ولا يُحذف شيء. تحتوي الاستجابة على code: in_filed_report وتسمّي كل تقرير، لتتمكن من فتحه في Console:
{
"detail": "A case about this person or company has a filed regulatory report, so it cannot be deleted.",
"code": "in_filed_report",
"reports": [
{
"uuid": "5ec00000-0000-4000-8000-000000000007",
"report_number": "SAR-0001",
"report_type": "SAR",
"case_uuid": "c1a5e000-0000-4000-8000-000000000001"
}
]
}
حذف جارٍ بالفعل
يُحذف الشخص بطلب واحد في كل مرة. إذا كان طلب آخر ما زال يحذف أحد الأشخاص المختارين، ينتظر هذا الطلب بضع ثوانٍ كحد أقصى، ثم يُرجع409 مع code: subject_deletion_in_progress ولا يحذف شيئاً:
{
"detail": "This person or company is being deleted. Retry after deletion completes.",
"code": "subject_deletion_in_progress"
}
الأذونات
يمكن لأي مفتاح API نشط للتطبيق استدعاء هذا endpoint. مفاتيح Didit API مقيّدة بالتطبيق، لا بالدور: تحدد الأدوار والأذونات في Console (delete:users وغيرها) ما يستطيع الشخص فعله داخل Console، ولا تُطبَّق على حركة Management API. للتحكم في من يستدعي هذا endpoint، تحكّم في من يمكنه قراءة مفتاح API الخاص بالتطبيق.
ذات صلة
التفويضات
مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console. يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير 404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع https://docs.didit.me/console/api-keys.
الجسم
قدّم vendor_data_list، أو didit_internal_id_list، أو delete_all: true. يمكن الجمع بين القائمتين وتطبيق معامل الربط OR بينهما. عندما تكون قيمة delete_all هي true، فإن لها الأسبقية ويتم تجاهل كلتا القائمتين.
المعرّفات الخاصة بك المراد حذفها، وتتم مطابقتها تماماً كما أُرسلت.
معرّفات المستخدم الداخلية لـ Didit المطلوب حذفها - وهو didit_internal_id الذي تُرجعه endpoints الخاصة بالإنشاء والجلب.
إذا كانت القيمة true، فسيتم حذف كل مستخدم في التطبيق.
اختيارك الصريح للاحتفاظ بقالب بيومتري واحد خالٍ من الصور لكل شخص تم حذفه للكشف عن التكرار، لمدة face_retention_days. يتم حذف كل شيء آخر متعلق بالشخص. أغفله، أو أرسل false، لحذف القوالب مع المستخدمين. عندما يكون true، يكون face_retention_days مطلوباً.
عدد الأيام التي يتم فيها الاحتفاظ بالقالب البيومتري الخالي من الصور عندما يكون retain_face_embeddings مضبوطاً على true. مطلوب معه، ويُرفض بدونه بخطأ 400 في face_retention_days.
1 <= x <= 3650365
الاستجابة
تم حذف المستخدمين. يرجع عدد المستخدمين الذين تم حذفهم بالفعل.
عدد المستخدمين المحذوفين (يستثني قيم vendor_data التي لم تطابق أي شيء).