curl -X POST https://verification.didit.me/v3/travel-rule/wallet-addresses/ \
-H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
-d '{"address": "0xBeneficiaryWallet01", "chain": "ETH", "holder_name": "Ana Diaz", "self_declared": true}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.travel_rule.wallet_addresses.create(
address="0xBeneficiaryWallet01",
chain="ETH",
holder_vendor_data="user-042",
holder_name="Ana Diaz",
self_declared=True,
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.travelRule.walletAddresses.create({
address: "0xBeneficiaryWallet01",
chain: "ETH",
holder_vendor_data: "user-042",
holder_name: "Ana Diaz",
self_declared: true,
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.TravelRule.WalletAddresses.Create(ctx, didit.WalletAddressEntryCreate{
Address: "0xBeneficiaryWallet01",
Chain: didit.String("ETH"),
HolderVendorData: didit.String("user-042"),
HolderName: didit.String("Ana Diaz"),
SelfDeclared: didit.Bool(true),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.WalletAddressEntryCreate;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.travelRule().walletAddresses().create(WalletAddressEntryCreate.builder()
.address("0xBeneficiaryWallet01")
.chain("ETH")
.holderVendorData("user-042")
.holderName("Ana Diaz")
.selfDeclared(true)
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->travelRule->walletAddresses->create([
'address' => '0xBeneficiaryWallet01',
'chain' => 'ETH',
'holder_vendor_data' => 'user-042',
'holder_name' => 'Ana Diaz',
'self_declared' => true,
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.travel_rule.wallet_addresses.create(
address: "0xBeneficiaryWallet01",
chain: "ETH",
holder_vendor_data: "user-042",
holder_name: "Ana Diaz",
self_declared: true
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.TravelRule.WalletAddresses.CreateAsync(new WalletAddressEntryCreate
{
Address = "0xBeneficiaryWallet01",
Chain = "ETH",
HolderVendorData = "user-042",
HolderName = "Ana Diaz",
SelfDeclared = true,
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"address": "<string>",
"chain": "<string>",
"holder_vendor_data": "<string>",
"holder_name": "<string>",
"entity_type": "<string>",
"is_ownership_verified": true,
"created_at": "2023-11-07T05:31:56Z",
"travel_address": "<string>",
"address_hash": "<string>",
"memo": "<string>",
"receiving_travel_address": "<string>"
}Регистрация кошелька — API адресной книги Travel Rule
Didit: добавьте свой кошелёк в адресную книгу Travel Rule, чтобы входящие INTERNAL-переводы поступали на него. Можно подтвердить самодекларацией.
curl -X POST https://verification.didit.me/v3/travel-rule/wallet-addresses/ \
-H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
-d '{"address": "0xBeneficiaryWallet01", "chain": "ETH", "holder_name": "Ana Diaz", "self_declared": true}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.travel_rule.wallet_addresses.create(
address="0xBeneficiaryWallet01",
chain="ETH",
holder_vendor_data="user-042",
holder_name="Ana Diaz",
self_declared=True,
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.travelRule.walletAddresses.create({
address: "0xBeneficiaryWallet01",
chain: "ETH",
holder_vendor_data: "user-042",
holder_name: "Ana Diaz",
self_declared: true,
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.TravelRule.WalletAddresses.Create(ctx, didit.WalletAddressEntryCreate{
Address: "0xBeneficiaryWallet01",
Chain: didit.String("ETH"),
HolderVendorData: didit.String("user-042"),
HolderName: didit.String("Ana Diaz"),
SelfDeclared: didit.Bool(true),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.WalletAddressEntryCreate;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.travelRule().walletAddresses().create(WalletAddressEntryCreate.builder()
.address("0xBeneficiaryWallet01")
.chain("ETH")
.holderVendorData("user-042")
.holderName("Ana Diaz")
.selfDeclared(true)
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->travelRule->walletAddresses->create([
'address' => '0xBeneficiaryWallet01',
'chain' => 'ETH',
'holder_vendor_data' => 'user-042',
'holder_name' => 'Ana Diaz',
'self_declared' => true,
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.travel_rule.wallet_addresses.create(
address: "0xBeneficiaryWallet01",
chain: "ETH",
holder_vendor_data: "user-042",
holder_name: "Ana Diaz",
self_declared: true
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.TravelRule.WalletAddresses.CreateAsync(new WalletAddressEntryCreate
{
Address = "0xBeneficiaryWallet01",
Chain = "ETH",
HolderVendorData = "user-042",
HolderName = "Ana Diaz",
SelfDeclared = true,
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"address": "<string>",
"chain": "<string>",
"holder_vendor_data": "<string>",
"holder_name": "<string>",
"entity_type": "<string>",
"is_ownership_verified": true,
"created_at": "2023-11-07T05:31:56Z",
"travel_address": "<string>",
"address_hash": "<string>",
"memo": "<string>",
"receiving_travel_address": "<string>"
}Авторизации
API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в Business Console. Основной ключ имеет полный доступ. Именованный ключ может иметь ограниченную область действия: без доступа, чтение или запись для каждого ресурса, ограничение определенными сценариями или одобренными сессиями, списком IP-адресов и сроком действия. 401 означает, что ключ неверен, отозван или его срок действия истек; 403 означает, что ключ не был передан, у ключа нет доступа к этому ресурсу или действию, либо запрос поступил с адреса вне его списка IP-адресов; 404 на маршруте сессии означает, что сессия не входит в сценарии или статусы ключа. Ключ без доступа к медиа получает URL изображений, видео и PDF как null, а ключ без прав на запись сессий получает ссылки на сессии и токены как null. См. https://docs.didit.me/console/api-keys.
Тело
Адрес кошелька. XRP X-address сохраняется как классический адрес и его тег, поэтому он сопоставляется с переводами, в которых указана любая из этих форм.
128token блокчейна для адреса, например ETH или BTC. Когда Didit маршрутизирует или регистрирует перевод, сервис сопоставляет записи адресной книги по адресу кошелька, а если перевод содержит блокчейн, также и по этому значению, без учёта регистра. Блокчейн перевода представляет собой beneficiary_data.chain, заполняемый из криптовалютного блокчейна транзакции или символа валюты (например, ETH), если вы его не передали, либо chain регистрации после депозита, поэтому используйте один и тот же token везде. Запись с пустым блокчейном соответствует любому блокчейну. Известные блокчейны сохраняются под одним каноническим идентификатором независимо от переданного написания: "ethereum", "Ethereum" и "ERC20" сохраняются как ETH, "BNB Smart Chain" и "BEP20" как BNB, "tron" как TRX. Неизвестное название блокчейна сохраняется в исходном виде.
3225525516Только для записи. Если true, запись создаётся с уже подтверждённым владением с помощью доказательства SELF_DECLARATION. Возвращает 400, когда allow_self_declaration отключён в ваших настройках Travel Rule.
Необязательно. Travel Address контрагента VASP для этого кошелька, включающий маршрутизацию TRP для поддерживаемых TRP активов (BTC, ETH и USDC в указанной сети). Недействительный Travel Address возвращает 400.
512Необязательно. Destination tag или memo, являющийся частью адреса кошелька. XRP: destination tag, целое число от 0 до 4294967295 (принимается как число JSON). XLM: текстовое memo до 28 байт, 64-битный идентификатор или 32-байтный хеш в шестнадцатеричном формате (hex). EOS: до 256 байт. ATOM: до 256 символов. HBAR: до 100 байт. Кошельки Bitcoin, EVM, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin и Lightning не поддерживают memo: его указание возвращает ошибку 400. Псевдонимы: destinationTag или destination_tag.
256Ответ
Созданная запись.
Адрес кошелька; "" для записи, импортированной только по её хешу. Уникален для каждого приложения, сети и memo; сравнение адресов выполняется без учёта регистра. После удаления записи вы можете зарегистрировать тот же адрес повторно.
Токен блокчейна для адреса, например ETH или BTC. Когда Didit маршрутизирует или регистрирует перевод, сервис сопоставляет записи адресной книги по адресу кошелька и, если перевод содержит блокчейн, также по этому значению без учёта регистра. Блокчейном перевода является beneficiary_data.chain, заполняемый из криптовалютного блокчейна транзакции или символа валюты (например, ETH), если вы его не передали, либо chain регистрации после депозита, поэтому используйте один и тот же токен везде. Запись с пустым блокчейном совпадает с любым блокчейном. Получатель Lightning (идентификатор узла или Lightning Address), зарегистрированный в сети bitcoin, сохраняется в нижнем регистре как LIGHTNING, по которому сопоставляются переводы Lightning. Известные блокчейны сохраняются под единым каноническим идентификатором независимо от используемого написания: "ethereum", "Ethereum" и "ERC20" сохраняются как ETH, "BNB Smart Chain" и "BEP20" сохраняются как BNB, а "tron" сохраняется как TRX. Неизвестное название блокчейна сохраняется в исходном виде.
Ваш внутренний идентификатор владельца.
Имя владельца кошелька, используемое для сопоставления имени получателя.
Текст в свободной форме, по умолчанию "individual".
Только для чтения. Было ли подтверждено владение этим адресом.
Travel Address VASP контрагента для этого кошелька, если известен. Позволяет Didit маршрутизировать переводы этого получателя через рельс TRP для активов, поддерживаемых TRP (BTC, ETH и USDC в указанной сети).
Только для чтения. SHA-256 адреса в нижнем регистре, в шестнадцатеричном формате в нижнем регистре. Запись, импортированная только по её хэшу, сопоставляется по нему.
Destination tag или memo, являющиеся частью кошелька в сети с поддержкой memo (XRP, XLM, EOS, ATOM, HBAR); "" для всего адреса. Запись с memo совпадает только с переводами, содержащими это memo; запись без memo совпадает со всем адресом целиком.
Ваш Travel Address для этого кошелька: передайте его отправляющему VASP, чтобы его запрос TRP указывал на этот кошелёк. Пусто для кошелька, зарегистрированного как кошелёк другого VASP, пока Travel Rule отключен, а также до сохранения вашего профиля VASP.