curl -X POST 'https://verification.didit.me/v3/users/aml-monitoring/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"is_enabled": true, "vendor_data_list": ["user-123", "user-456"]}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.users.set_aml_monitoring(
is_enabled=True,
estimate_only=True,
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.setAmlMonitoring({
is_enabled: true,
estimate_only: true,
vendor_data_list: ["user-123", "user-456"],
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Users.SetAMLMonitoring(ctx, didit.UsersSetAMLMonitoringParams{
IsEnabled: true,
EstimateOnly: didit.Bool(true),
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.UsersSetAmlMonitoringParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.users().setAmlMonitoring(UsersSetAmlMonitoringParams.builder()
.isEnabled(true)
.estimateOnly(true)
.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->setAmlMonitoring([
'is_enabled' => true,
'estimate_only' => true,
'vendor_data_list' => ['user-123', 'user-456'],
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.users.set_aml_monitoring(
is_enabled: true,
estimate_only: true,
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.SetAmlMonitoringAsync(new UsersSetAmlMonitoringParams
{
IsEnabled = true,
EstimateOnly = true,
VendorDataList = new string[] { "user-123", "user-456" },
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"users_total": 123,
"already_enabled": 123,
"with_existing_aml": 123,
"needing_screening": 123,
"skipped_no_identity_data": 123,
"skipped_blocked": 123,
"estimated_screening_cost_usd": 0.2,
"estimated_annual_monitoring_cost_usd": 0.07,
"balance_sufficient": true,
"unmatched": [
"<string>"
]
}{
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "PENDING",
"is_enabled": true,
"target_type": "user",
"total": 123,
"processed": 123,
"outcomes": {
"enabled": 123,
"screened_and_enabled": 123,
"already_enabled": 123,
"disabled": 123,
"skipped_no_identity_data": 123,
"skipped_blocked": 123,
"skipped_sandbox": 123,
"failed_provider": 123,
"failed_insufficient_balance": 123
},
"results": [
{
"didit_internal_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vendor_data": "<string>",
"outcome": "enabled"
}
],
"error": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"estimate": {
"users_total": 123,
"already_enabled": 123,
"with_existing_aml": 123,
"needing_screening": 123,
"skipped_no_identity_data": 123,
"skipped_blocked": 123,
"estimated_screening_cost_usd": 0.2,
"estimated_annual_monitoring_cost_usd": 0.07,
"balance_sufficient": true
},
"unmatched": [
"<string>"
]
}{
"error": "<string>",
"estimate": {
"users_total": 123,
"already_enabled": 123,
"with_existing_aml": 123,
"needing_screening": 123,
"skipped_no_identity_data": 123,
"skipped_blocked": 123,
"estimated_screening_cost_usd": 0.2,
"estimated_annual_monitoring_cost_usd": 0.07,
"balance_sufficient": true
}
}تفعيل أو إيقاف مراقبة AML للمستخدمين عبر API
فعّل أو أوقف مراقبة AML المستمرة لعدد كبير من المستخدمين بطلب واحد، مع تقدير للتكلفة وتشغيل تجريبي ومهمة قابلة للاستعلام ونتيجة لكل مستخدم في Didit.
curl -X POST 'https://verification.didit.me/v3/users/aml-monitoring/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"is_enabled": true, "vendor_data_list": ["user-123", "user-456"]}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.users.set_aml_monitoring(
is_enabled=True,
estimate_only=True,
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.setAmlMonitoring({
is_enabled: true,
estimate_only: true,
vendor_data_list: ["user-123", "user-456"],
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Users.SetAMLMonitoring(ctx, didit.UsersSetAMLMonitoringParams{
IsEnabled: true,
EstimateOnly: didit.Bool(true),
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.UsersSetAmlMonitoringParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.users().setAmlMonitoring(UsersSetAmlMonitoringParams.builder()
.isEnabled(true)
.estimateOnly(true)
.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->setAmlMonitoring([
'is_enabled' => true,
'estimate_only' => true,
'vendor_data_list' => ['user-123', 'user-456'],
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.users.set_aml_monitoring(
is_enabled: true,
estimate_only: true,
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.SetAmlMonitoringAsync(new UsersSetAmlMonitoringParams
{
IsEnabled = true,
EstimateOnly = true,
VendorDataList = new string[] { "user-123", "user-456" },
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"users_total": 123,
"already_enabled": 123,
"with_existing_aml": 123,
"needing_screening": 123,
"skipped_no_identity_data": 123,
"skipped_blocked": 123,
"estimated_screening_cost_usd": 0.2,
"estimated_annual_monitoring_cost_usd": 0.07,
"balance_sufficient": true,
"unmatched": [
"<string>"
]
}{
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "PENDING",
"is_enabled": true,
"target_type": "user",
"total": 123,
"processed": 123,
"outcomes": {
"enabled": 123,
"screened_and_enabled": 123,
"already_enabled": 123,
"disabled": 123,
"skipped_no_identity_data": 123,
"skipped_blocked": 123,
"skipped_sandbox": 123,
"failed_provider": 123,
"failed_insufficient_balance": 123
},
"results": [
{
"didit_internal_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vendor_data": "<string>",
"outcome": "enabled"
}
],
"error": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"estimate": {
"users_total": 123,
"already_enabled": 123,
"with_existing_aml": 123,
"needing_screening": 123,
"skipped_no_identity_data": 123,
"skipped_blocked": 123,
"estimated_screening_cost_usd": 0.2,
"estimated_annual_monitoring_cost_usd": 0.07,
"balance_sufficient": true
},
"unmatched": [
"<string>"
]
}{
"error": "<string>",
"estimate": {
"users_total": 123,
"already_enabled": 123,
"with_existing_aml": 123,
"needing_screening": 123,
"skipped_no_identity_data": 123,
"skipped_blocked": 123,
"estimated_screening_cost_usd": 0.2,
"estimated_annual_monitoring_cost_usd": 0.07,
"balance_sufficient": true
}
}نظرة عامة
يفعّل أو يعطّل مراقبة AML المستمرة لـكيانات المستخدمين المحددة، تمامًا كما يعمل الإجراء AML Ongoing monitoring في Business Console. تنفّذ وحدة Console وهذا endpoint العملية الأساسية نفسها، لذلك تكون القواعد والفوترة والنتائج متطابقة. أرسلestimate_only: true أولًا لمعرفة عدد المستخدمين المحددين، وعدد من يحتاجون إلى فحص AML جديد، وتكلفة الفحص لمرة واحدة، وتكلفة المراقبة السنوية. لا يكتب التشغيل التجريبي أي بيانات.
متى تستخدمه
- التسجيل البرمجي: فعّل المراقبة للمستخدمين الذين استوردتهم أو أنشأتهم عبر API دون إعادة فحصهم يدويًا.
- إنهاء الخدمة: أوقف المراقبة، وتجديدها السنوي، للمستخدمين الذين غادروا منصتك.
- التحكم في التكلفة: اطّلع على الأثر الدقيق للتكلفة لأي تحديد قبل اعتماده.
كيفية معالجة التحديد
- فحص مراقب واحد لكل مستخدم. يُراقَب المستخدم الذي تحقق عدة مرات ويُفوتَر مرة واحدة. يؤدي التعطيل إلى إيقاف المراقبة عبر جميع فحوص هذا المستخدم.
- يُفحص أولًا المستخدمون الذين لا يملكون فحص AML. تنشئ Didit تحقق AML جديدًا لهم (يظهر في تبويب Verifications لدى المستخدم)، ويُفوتَر كفحص AML عادي، وتُفعَّل عليه المراقبة. يتطلب ذلك الاسم الكامل وتاريخ الميلاد والدولة الخاصة بالمستخدم، ويُبلَّغ عن المستخدم الذي يفتقد أيًا منها بالقيمة
skipped_no_identity_dataبدلًا من تجاهله بصمت. - يُتخطى المستخدمون المحظورون (
skipped_blocked). ولا تنشئ تطبيقات البيئة التجريبية أي فحوص أبدًا (skipped_sandbox). - يُتحقق من الرصيد مسبقًا. يُرفض التفعيل بالرمز
403إذا لم يغطِّ رصيدك التقدير، وتتضمن الاستجابة التقدير حتى تعرف مقدار ما تحتاج إلى شحنه. - التجديد السنوي. يُفوتَر المستخدم المفعَّل حديثًا بسعر المراقبة السنوي عند تاريخ تجديده التالي، وهو التاريخ نفسه الذي تعرضه Console في عمود Ongoing monitoring. يوقف التعطيل التجديد، لكنه لا يسترد فترة سبق فوترتها.
التحديد وحجم الدفعة
حدِّد المستخدمين باستخدامvendor_data_list أو didit_internal_id_list أو كليهما؛ وتُدمَج القائمتان بعملية OR. يقبل الطلب ما لا يزيد على 1000 معرّف عبر القائمتين معًا. تُعاد المعرّفات التي لا تطابق أي مستخدم في تطبيقك ضمن unmatched كما أُرسلت تمامًا، ولا يفشل الطلب أبدًا: يكتمل التحديد الذي لا يطابق شيئًا كمهمة فارغة (total: 0) مع إدراج كل المعرّفات، وذلك وفق الاصطلاح نفسه المتبع في endpoints الخاصة بالحذف الدفعي.
المعالجة المباشرة أو في الخلفية
تُعالَج التحديدات التي تضم 20 مستخدمًا أو أقل مباشرة، ويعيد الاستدعاء الرمز200 مع المهمة المكتملة. أما التحديدات الأكبر فتعيد الرمز 202 مع مهمة بحالة PENDING؛ استعلم عن الحصول على مهمة مراقبة AML حتى تصبح قيمة status إما COMPLETED أو FAILED. وفي الحالتين تتضمن المهمة إدخالًا واحدًا ضمن results لكل مستخدم مع outcome الخاص به.
outcome | المعنى |
|---|---|
enabled | فُعّلت المراقبة على فحص AML موجود. |
screened_and_enabled | أُنشئ فحص AML جديد (ويُفوتَر) وفُعّلت المراقبة عليه. |
already_enabled | كانت المراقبة مفعّلة بالفعل؛ لم يتغير شيء ولم يُفوتَر أي مبلغ. |
disabled | أُوقفت المراقبة عبر جميع فحوص المستخدم. |
skipped_no_identity_data | يفتقد المستخدم الاسم الكامل أو تاريخ الميلاد أو الدولة اللازمة للفحص. |
skipped_blocked | المستخدم محظور. |
skipped_sandbox | تطبيق في البيئة التجريبية؛ لا يُنشأ أي فحص. |
failed_provider | تعذّر إكمال الفحص. أعد المحاولة لاحقًا. |
failed_insufficient_balance | نفد الرصيد أثناء تشغيل المهمة. |
webhooks
لا يُصدر تبديل المراقبة أي webhook خاص به. وبمجرد تفعيل المراقبة، تستمر عمليات إعادة الفحص في إطلاق أحداثstatus.updated وdata.updated المعتادة الموصوفة في مراقبة AML المستمرة.
الأذونات
يمكن لأي مفتاح API نشط للتطبيق استدعاء هذا endpoint. مفاتيح API في Didit محصورة بالتطبيق وليست بالأدوار: تحدد الأدوار والأذونات في Console ما يستطيع الشخص فعله داخل Console، ولا تُطبَّق على طلبات Management API.ذات صلة
- الحصول على مهمة مراقبة AML
- تبديل مراقبة AML للشركات
- مراقبة AML المستمرة
- AML Screening 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 أو كليهما (يتم الجمع بين القائمتين باستخدام المعامل OR). بحد أقصى 1000 معرّف لكل طلب عبر كلتا القائمتين.
true لتفعيل المراقبة، وfalse لتعطيلها.
عند التعيين على true، يُرجع تقدير التكلفة ولا ينفذ أي عمليات كتابة - لا فحص، ولا فوترة، ولا مهمة.
المعرّفات الخاصة بك للمستخدمين المراد تبديل حالتهم، وتتم مطابقتها تماماً كما أُرسلت.
المعرّفات الداخلية لـ Didit للمستخدمين المراد تبديل حالتهم - أي didit_internal_id الذي تُرجعه endpoints الخاصة بالإنشاء والجلب والإدراج.
الاستجابة
التقدير (عندما يكون estimate_only صحيحاً) أو المهمة المكتملة لاختيار تمت معالجته بشكل مضمّن.
- Option 1
- Option 2
معاينة التكلفة. يتم إرجاعها مباشرة عندما يكون estimate_only صحيحاً (لا يتم كتابة أي شيء).
الملفات الشخصية المطابقة للتحديد.
الملفات الشخصية الخاضعة للمراقبة بالفعل (لا يلزم اتخاذ أي إجراء عند التفعيل؛ هذه هي الملفات التي يتم إيقافها عند التعطيل).
الملفات الشخصية التي سيتم تحويل فحص AML الحالي الخاص بها إلى قيد المراقبة (دون إجراء فحص جديد).
الملفات الشخصية التي لا تخضع لأي فحص AML وسيُجرى فحصها أولاً (تتم فوترتها كفحص AML عادي).
الملفات الشخصية التي لا يمكن فحصها بسبب نقص بيانات الهوية.
المستخدمون المحظورون الذين سيتم تخطيهم (تكون دائماً 0 للشركات).
التكلفة لمرة واحدة لعمليات الفحص الجديدة.
0.2
تكلفة المراقبة السنوية للملفات الشخصية التي ستصبح خاضعة للمراقبة.
0.07
ما إذا كان رصيد المؤسسة يغطي الفحص بالإضافة إلى السنة الأولى من المراقبة.
معرّفات الطلب التي لم تطابق أي ملف تعريف في هذا التطبيق، تماماً كما أُرسلت.