curl -X POST 'https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/user-link/' \
-H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
-d '{"channel": "link"}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.transactions.travel_rule.create_user_link(
"11111111-2222-3333-4444-555555555555",
channel="link",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.transactions.travelRule.createUserLink("11111111-2222-3333-4444-555555555555", {
channel: "link",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Transactions.TravelRule.CreateUserLink(ctx, "11111111-2222-3333-4444-555555555555", didit.TravelRuleUserLinkRequest{
Channel: didit.Some(didit.TravelRuleUserLinkRequestChannel("link")),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.TravelRuleUserLinkRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.transactions().travelRule().createUserLink("11111111-2222-3333-4444-555555555555", TravelRuleUserLinkRequest.builder()
.channel(TravelRuleUserLinkRequest.Channel.of("link"))
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->transactions->travelRule->createUserLink('11111111-2222-3333-4444-555555555555', [
'channel' => 'link',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.transactions.travel_rule.create_user_link(
"11111111-2222-3333-4444-555555555555",
channel: "link"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Transactions.TravelRule.CreateUserLinkAsync("11111111-2222-3333-4444-555555555555", new TravelRuleUserLinkRequest
{
Channel = new TravelRuleUserLinkRequestChannel("link"),
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"end_user_link": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"emailed_to": "<string>",
"email_available": true
}{
"detail": "This end user has no email on their Didit record. Copy the link instead.",
"code": "end_user_email_missing"
}Ссылка Travel Rule для конечного пользователя: создание и отправка
Создайте ссылку Travel Rule для конечного пользователя в Didit или отправьте её на его адрес: срок действия, отзыв, статус доставки.
curl -X POST 'https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/user-link/' \
-H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
-d '{"channel": "link"}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.transactions.travel_rule.create_user_link(
"11111111-2222-3333-4444-555555555555",
channel="link",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.transactions.travelRule.createUserLink("11111111-2222-3333-4444-555555555555", {
channel: "link",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Transactions.TravelRule.CreateUserLink(ctx, "11111111-2222-3333-4444-555555555555", didit.TravelRuleUserLinkRequest{
Channel: didit.Some(didit.TravelRuleUserLinkRequestChannel("link")),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.TravelRuleUserLinkRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.transactions().travelRule().createUserLink("11111111-2222-3333-4444-555555555555", TravelRuleUserLinkRequest.builder()
.channel(TravelRuleUserLinkRequest.Channel.of("link"))
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->transactions->travelRule->createUserLink('11111111-2222-3333-4444-555555555555', [
'channel' => 'link',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.transactions.travel_rule.create_user_link(
"11111111-2222-3333-4444-555555555555",
channel: "link"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Transactions.TravelRule.CreateUserLinkAsync("11111111-2222-3333-4444-555555555555", new TravelRuleUserLinkRequest
{
Channel = new TravelRuleUserLinkRequestChannel("link"),
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"end_user_link": "<string>",
"expires_at": "2023-11-07T05:31:56Z",
"emailed_to": "<string>",
"email_available": true
}{
"detail": "This end user has no email on their Didit record. Copy the link instead.",
"code": "end_user_email_missing"
}{"channel": "link"}, чтобы скопировать ссылку, или {"channel": "email"}, чтобы дополнительно попытаться отправить её по электронной почте. Если не указать channel, по умолчанию используется link. Письмо отправляется на адрес конечного пользователя из записи Didit и на языке сессии верификации, если он доступен. Указать произвольного получателя нельзя.
Для вызова API требуется доступ на запись к транзакциям, а исходящий перевод должен находиться в одном из состояний: AWAITING_COUNTERPARTY, COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE, UNCONFIRMED_OWNERSHIP или ON_HOLD. В других состояниях API возвращает 409. Если транзакция неизвестна или перевод не найден, возвращается 404.
Ответ содержит end_user_link, expires_at, emailed_to и email_available. Новая ссылка отзывает все предыдущие открытые ссылки для конечного пользователя по этому переводу. Передавайте ссылку только предназначенному конечному пользователю.
Если адрес электронной почты в записи не указан, channel: email возвращает 409 с code: end_user_email_missing. В этом случае запросите channel: link. Если отправка не удалась, API всё равно возвращает рабочую ссылку, а emailed_to будет пустым. email_available означает, что адрес существует, но не то, что письмо доставлено.
Для явного выбора пользователя при создании см. Создание транзакции и руководство по Travel Rule. Для действий с переводом см. Обновление перевода.Авторизации
API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в Business Console. Основной ключ имеет полный доступ. Именованный ключ может иметь ограниченную область действия: без доступа, чтение или запись для каждого ресурса, ограничение определенными сценариями или одобренными сессиями, списком IP-адресов и сроком действия. 401 означает, что ключ неверен, отозван или его срок действия истек; 403 означает, что ключ не был передан, у ключа нет доступа к этому ресурсу или действию, либо запрос поступил с адреса вне его списка IP-адресов; 404 на маршруте сессии означает, что сессия не входит в сценарии или статусы ключа. Ключ без доступа к медиа получает URL изображений, видео и PDF как null, а ключ без прав на запись сессий получает ссылки на сессии и токены как null. См. https://docs.didit.me/console/api-keys.
Параметры пути
Стабильный UUID транзакции Didit, которой принадлежит перевод.
Тело
link возвращает новую ссылку; email также пытается отправить её на адрес электронной почты конечного пользователя из его записи в Didit.
link, email Ответ
Успешный ответ.
Новая ссылка для конечного пользователя. Предыдущие открытые ссылки для этого перевода отзываются.
Срок действия ссылки.
Получатель, если отправка прошла успешно, иначе пустая строка. Ошибка отправки письма всё равно возвращает рабочую ссылку.
Есть ли у конечного пользователя адрес электронной почты в его записи Didit.