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 не затрагивает: они сохраняются, а связь с пользователем удаляется. Удалите их с помощью Delete Session или Batch Delete Sessions. Транзакции также не затрагиваются: удалите их с помощью Batch Delete Transactions.Когда использовать
- Запросы на реализацию права на забвение (GDPR / CCPA).
- Удаление тестовых пользователей во время QA.
- Деактивация пользователей, удалённых с вашей платформы.
Примечания
- Принимает список значений
vendor_data, список значенийdidit_internal_idилиdelete_all: true. Два списка можно комбинировать, и они объединяются по логике OR. - Этот endpoint никогда не ограничивает
delete_allфильтрами. Пакетные параметрыfilter_*из Консоли отклоняются с кодом400, поэтому сужение выборки не приводит к удалению всех пользователей приложения. Исключения:filter_has_approved_sessionsиfilter_has_declined_sessionsне отклоняются и не применяются, поэтому не отправляйте их вместе сdelete_all. - Принцип «всё или ничего»: если удаление не может быть завершено для выбранных пользователей, ни один из них не удаляется, и вы можете безопасно повторить тот же запрос.
- Идемпотентность: повторная отправка того же списка возвращает
deleted: 0после первого выполнения. - Возвращает только количество удалённых записей, а не отчёт по каждому элементу. Значения, которым ничего не соответствует, пропускаются без уведомления. Если вы хотите сравнить
deletedс количеством отправленных идентификаторов, отправьте список без дубликатов, поскольку повторяющийся идентификатор учитывается только один раз. - Для удаления webhook не отправляется. webhook-события срабатывают при изменении статуса и данных пользователя, но не при удалении, поэтому интеграция, которой нужен сигнал об удалении, должна фиксировать его на своей стороне.
- Сессии верификации, связанные с пользователем, этим 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 и называет каждый отчёт, чтобы его можно было открыть в Консоли:
{
"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"
}
Разрешения
Вызывать этот endpoint может любой активный API-ключ приложения. API-ключи Didit привязаны к приложению, а не к роли: роли и разрешения в Консоли (delete:users и другие) определяют, что может делать человек в Консоли, и не проверяются для трафика Management API. Контролируйте, кто может вызывать этот endpoint, ограничивая доступ к чтению API-ключа приложения.
Связанные материалы
Авторизации
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 или delete_all: true. Эти два списка можно комбинировать, они объединяются по условию «ИЛИ». Если 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, которым ничего не соответствовало).