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-мониторинг для выбранных объектов User так же, как действие Постоянный AML-мониторинг в Business Console. Консоль и этот эндпоинт выполняют одну и ту же базовую операцию, поэтому правила, биллинг и результаты совпадают. Сначала отправьтеestimate_only: true, чтобы увидеть, сколько пользователей выбрано, сколько из них требуют нового AML-скрининга, стоимость разового скрининга и годовую стоимость мониторинга. Пробный запуск ничего не записывает.
Когда использовать
- Программный онбординг: включите мониторинг для пользователей, которых вы импортировали или создали через API, без ручного повторного скрининга.
- Оффбординг: выключите мониторинг и его годовое продление для пользователей, которые покинули вашу платформу.
- Контроль расходов: заранее посмотрите точное влияние выбранной группы на стоимость, прежде чем подтверждать действие.
Как обрабатывается выборка
- Один скрининг под мониторингом на пользователя. Пользователь, который проходил верификацию несколько раз, находится под мониторингом и тарифицируется один раз. Выключение мониторинга отключает его для всех скринингов этого пользователя.
- Пользователи без AML-скрининга сначала проходят скрининг. Didit создает для них новую AML-верификацию (она видна на вкладке Верификации пользователя), тарифицируется как обычный AML-скрининг, и на ней включается мониторинг. Для этого нужны полное имя пользователя, дата рождения и страна. Если хотя бы одного из этих данных нет, пользователь возвращается со статусом
skipped_no_identity_data, а не пропадает молча. - Заблокированные пользователи пропускаются (
skipped_blocked). Приложения в песочнице никогда не создают скрининги (skipped_sandbox). - Баланс проверяется заранее. Включение отклоняется с кодом
403, если баланса недостаточно для покрытия расчетной стоимости. В ответе передается оценка, чтобы вы знали, на какую сумму нужно пополнить баланс. - Годовое продление. Для нового пользователя под мониторингом годовая стоимость мониторинга начисляется на следующую дату продления. Это та же дата, что показана в колонке Постоянный AML-мониторинг в Консоли. Выключение останавливает продление, но не возвращает средства за уже оплаченный период.
Выбор и размер пакета
Выбирайте пользователей черезvendor_data_list, didit_internal_id_list или через оба параметра. Списки объединяются логическим ИЛИ. Один запрос принимает не более 1000 идентификаторов в сумме по обоим спискам. Идентификаторы, которые не совпадают ни с одним пользователем вашего приложения, возвращаются в unmatched в том виде, в котором были отправлены. Они никогда не приводят к ошибке запроса. Выборка без совпадений завершается пустой задачей (total: 0), где перечислены все идентификаторы. Это то же правило, что и у эндпоинтов пакетного удаления.
Синхронная или фоновая обработка
Выборки из 20 пользователей или меньше обрабатываются синхронно, и вызов возвращает200 с завершенной задачей. Большие выборки возвращают 202 с задачей в статусе PENDING. Опрашивайте Get AML Monitoring Job, пока 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 | Баланс закончился во время выполнения задачи. |
Webhook
Переключение мониторинга не отправляет собственного webhook. Когда мониторинг включен, повторные проверки продолжают отправлять обычные событияstatus.updated и data.updated, описанные в Continuous AML Monitoring.
Права доступа
Вызывать этот эндпоинт может любой активный API-ключ приложения. API-ключи Didit привязаны к приложению, а не к роли. Роли и разрешения в Консоли определяют, что может делать человек в Консоли, и для трафика Management API они не проверяются.Связанные материалы
- Get AML Monitoring Job
- Toggle AML Monitoring for Businesses
- Continuous AML Monitoring
- AML Screening API
- List Users
Авторизации
API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в Business Console. Основной ключ имеет полный доступ. Именованный ключ может иметь ограниченную область действия: без доступа, чтение или запись для каждого ресурса, ограничение определенными сценариями или одобренными сессиями, списком IP-адресов и сроком действия. 401 означает, что ключ неверен, отозван или его срок действия истек; 403 означает, что ключ не был передан, у ключа нет доступа к этому ресурсу или действию, либо запрос поступил с адреса вне его списка IP-адресов; 404 на маршруте сессии означает, что сессия не входит в сценарии или статусы ключа. Ключ без доступа к медиа получает URL изображений, видео и PDF как null, а ключ без прав на запись сессий получает ссылки на сессии и токены как 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 равно true) или завершённое задание для выборки, обработанной синхронно.
- Option 1
- Option 2
Предварительный расчёт стоимости. Возвращается напрямую, если estimate_only имеет значение true (ничего не записывается).
Профили, соответствующие выборке.
Профили, которые уже находятся на мониторинге (при включении действий не требуется; это профили, которые отключаются при деактивации).
Профили, для которых существующий AML-скрининг будет переведён в статус постоянного мониторинга (новый скрининг не проводится).
Профили без AML-скрининга, для которых скрининг будет проведён впервые (оплачивается как обычный AML-скрининг).
Профили, для которых невозможно провести скрининг из-за отсутствия идентификационных данных.
Заблокированные пользователи, которые будут пропущены (всегда 0 для компаний).
Разовая стоимость новых проверок.
0.2
Ежегодная стоимость мониторинга профилей, которые будут отслеживаться.
0.07
Покрывает ли баланс организации скрининг плюс первый год мониторинга.
Идентификаторы из запроса, которым не подошёл ни один профиль в этом приложении, в точности так, как они были отправлены.