curl -X POST \
https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/decision-email-preview/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"new_status": "Approved", "email_language": "en"}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.preview_decision_email(
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
new_status="Approved",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.previewDecisionEmail("3fa85f64-5717-4562-b3fc-2c963f66afa6", {
new_status: "Approved",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.PreviewDecisionEmail(ctx, "3fa85f64-5717-4562-b3fc-2c963f66afa6", didit.SessionsPreviewDecisionEmailParams{
NewStatus: "Approved",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.SessionsPreviewDecisionEmailParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().previewDecisionEmail("3fa85f64-5717-4562-b3fc-2c963f66afa6", SessionsPreviewDecisionEmailParams.builder()
.newStatus(SessionsPreviewDecisionEmailParams.NewStatus.of("Approved"))
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->previewDecisionEmail('3fa85f64-5717-4562-b3fc-2c963f66afa6', [
'new_status' => 'Approved',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.preview_decision_email(
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
new_status: "Approved"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Sessions.PreviewDecisionEmailAsync("3fa85f64-5717-4562-b3fc-2c963f66afa6", new SessionsPreviewDecisionEmailParams
{
NewStatus = "Approved",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"recipient": "person@example.com",
"recipient_source": "email_verification",
"sender": "Example App <no-reply@mail.example.com>",
"sender_name": "Example App",
"sender_email": "no-reply@mail.example.com",
"sender_kind": "customer",
"subject": "Your verification has been approved in Example App",
"html": "<!DOCTYPE html><html><body>...</body></html>",
"language": "en",
"will_be_sent": true,
"not_sent_reason": null,
"preview_token": "eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"
}Предпросмотр письма о решении API: одобрено и отклонено
Посмотрите письмо Didit об одобрении или отклонении, которое получает человек: получатель, отправитель и язык, до смены статуса сессии.
curl -X POST \
https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/decision-email-preview/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"new_status": "Approved", "email_language": "en"}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.preview_decision_email(
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
new_status="Approved",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.previewDecisionEmail("3fa85f64-5717-4562-b3fc-2c963f66afa6", {
new_status: "Approved",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.PreviewDecisionEmail(ctx, "3fa85f64-5717-4562-b3fc-2c963f66afa6", didit.SessionsPreviewDecisionEmailParams{
NewStatus: "Approved",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.SessionsPreviewDecisionEmailParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().previewDecisionEmail("3fa85f64-5717-4562-b3fc-2c963f66afa6", SessionsPreviewDecisionEmailParams.builder()
.newStatus(SessionsPreviewDecisionEmailParams.NewStatus.of("Approved"))
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->previewDecisionEmail('3fa85f64-5717-4562-b3fc-2c963f66afa6', [
'new_status' => 'Approved',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.preview_decision_email(
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
new_status: "Approved"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Sessions.PreviewDecisionEmailAsync("3fa85f64-5717-4562-b3fc-2c963f66afa6", new SessionsPreviewDecisionEmailParams
{
NewStatus = "Approved",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"recipient": "person@example.com",
"recipient_source": "email_verification",
"sender": "Example App <no-reply@mail.example.com>",
"sender_name": "Example App",
"sender_email": "no-reply@mail.example.com",
"sender_kind": "customer",
"subject": "Your verification has been approved in Example App",
"html": "<!DOCTYPE html><html><body>...</body></html>",
"language": "en",
"will_be_sent": true,
"not_sent_reason": null,
"preview_token": "eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"
}Approved или Declined с send_email: true.
Он также сообщает, кто получит письмо, от кого оно придёт и отправится ли оно при подтверждении.
Кто получает письмо
Письмо отправляется на собственный адрес человека: тот, который он верифицировал на шаге проверки электронной почты в сценарии, а если такой адрес отсутствует, то адрес изcontact_details, указанный при создании сессии.
recipient_source показывает, какой из них применяется (email_verification или contact_details).
Если у сессии нет адреса для этого человека, поля recipient, recipient_source и preview_token содержат пустые строки, и письмо отправить нельзя.
Письмо отправляется с проверенного домена отправителя вашего приложения, если применяется ваша конфигурация White label (sender_kind: customer). В остальных случаях оно отправляется от имени Didit (sender_kind: didit).
Отправляется ли письмо
will_be_sent равно true, если при подтверждении изменения с send_email: true письмо действительно отправляется.
Если оно равно false, not_sent_reason объясняет причину:
not_sent_reason | Что это значит |
|---|---|
status_unchanged | У сессии уже есть этот статус, поэтому обновление ничего не меняет и ничего не отправляет. |
notification_emails_disabled | Сессия создана без contact_details.send_notification_emails: true, поэтому письмо с решением на адрес из contact_details не отправляется. |
no_recipient | Адрес этого человека неизвестен. |
sandbox | Это сессия песочницы, и получатель не дал согласие на доставку писем в песочнице, поэтому письмо только имитируется. См. согласие на получение писем. |
Подтвердите решение
Вызовите Update Session Status с этими полями:| Поле Update Session Status | Значение |
|---|---|
new_status | Тот же new_status, который вы просмотрели в предпросмотре |
send_email | true |
email_address | recipient из предпросмотра |
email_language | language из предпросмотра |
email_preview_token | preview_token из предпросмотра |
409 до того, как что-либо изменится.
Выполните предпросмотр снова и подтвердите решение с новой квитанцией.
Связанные материалы
- Update Session Status: одобрить или отклонить сессию и отправить письмо.
- Preview Resubmission Email: вместо этого просмотреть письмо о повторной подаче документов.
- White label: отправитель и брендинг, которые использует письмо.
Авторизации
API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в Business Console. Основной ключ имеет полный доступ. Именованный ключ может иметь ограниченную область действия: без доступа, чтение или запись для каждого ресурса, ограничение определенными сценариями или одобренными сессиями, списком IP-адресов и сроком действия. 401 означает, что ключ неверен, отозван или его срок действия истек; 403 означает, что ключ не был передан, у ключа нет доступа к этому ресурсу или действию, либо запрос поступил с адреса вне его списка IP-адресов; 404 на маршруте сессии означает, что сессия не входит в сценарии или статусы ключа. Ключ без доступа к медиа получает URL изображений, видео и PDF как null, а ключ без прав на запись сессий получает ссылки на сессии и токены как null. См. https://docs.didit.me/console/api-keys.
Параметры пути
UUID сессии верификации. Принимает ID сессий как пользователей (KYC), так и компаний (KYB).
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
Тело
Решение, электронное письмо по которому вы хотите предварительно просмотреть.
Approved, Declined "Approved"
Язык письма, то же значение по умолчанию, что и у Update Session Status. Если язык недоступен, используется английский; поле language в ответе указывает, какой именно был применён.
"en"
Ответ
Только предварительный просмотр. Сессия остаётся без изменений, письмо не отправляется.
Адрес, на который отправляется электронное письмо. Пустая строка, если адрес человека неизвестен: в этом случае письмо отправить нельзя, и preview_token также пуст. Передайте его как email_address при подтверждении.
"person@example.com"
Источник значения recipient. email_verification: адрес, подтвержденный пользователем на шаге проверки электронной почты сценария. contact_details: адрес, указанный в contact_details при создании сессии. Пустая строка, если адрес отсутствует.
email_verification, contact_details, "email_verification"
Заголовок From, с которым отправляется электронное письмо.
"Example App <no-reply@mail.example.com>"
Отображаемая часть имени в sender.
"Example App"
Часть адреса sender.
"no-reply@mail.example.com"
customer: письмо отправляется с подтверждённого домена отправителя вашего приложения (White label). didit: отправляется с собственного отправителя Didit.
customer, didit "customer"
Тема письма в точности так, как она отправляется.
"Your verification has been approved in Example App"
HTML письма точно в том виде, в котором оно отправляется, со встроенным логотипом в формате data URL. Отображайте его в изолированном фрейме (sandbox), ни в коем случае не напрямую в DOM вашего приложения.
"<!DOCTYPE html><html><body>...</body></html>"
Текст письма в виде обычного текста, как он хранится в цепочке сообщений пользователя, для компактного предварительного просмотра (в качестве получаемого письма остаётся HTML).
"Verification Approved\n\nYour identity has been successfully verified with Acme Pay. No further action is needed on your part."
Язык, на котором составлено письмо. Английский (en), если запрошенный email_language недоступен.
"en"
Отправляет ли подтверждение изменения с помощью send_email: true это электронное письмо. Значение false, если задан not_sent_reason.
true
Причина, по которой подтверждение не приведёт к отправке электронного письма, или null, если оно будет отправлено. status_unchanged: у сессии уже установлен этот статус, поэтому обновление ничего не меняет и ничего не отправляет. notification_emails_disabled: сессия была создана без contact_details.send_notification_emails: true, поэтому электронное письмо с решением не отправляется на адрес, указанный в contact_details. no_recipient: адрес этого человека неизвестен. sandbox: сессия в песочнице, получатель которой не дал согласие на доставку электронных писем в песочнице, поэтому отправка только имитируется.
status_unchanged, notification_emails_disabled, no_recipient, sandbox, null null
Подписанная квитанция для этого конкретного письма, действующая в течение 15 минут. Передайте ее как email_preview_token в Обновить статус сессии. Пустая строка, если получатель отсутствует.
"eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"