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 para registrar direcciones de wallet en Travel Rule
Añade con Didit una wallet propia a la libreta de direcciones de Travel Rule para recibir transferencias INTERNAL, opcionalmente autodeclarada.
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>"
}Autorizaciones
La clave de API de tu aplicación, que encontrarás en Developers -> API keys en la Business Console. La clave principal tiene acceso completo. Una clave con nombre puede tener un alcance limitado: ninguno, lectura o escritura por recurso, limitada a algunos flujos o a sesiones aprobadas, a una lista de direcciones IP y a una fecha de caducidad. 401 significa que la clave es incorrecta, se revocó o expiró; 403 significa que no se envió ninguna clave, que la clave no tiene acceso a este recurso o acción, o que la solicitud provino de una dirección fuera de su lista de IP; 404 en una ruta de sesión significa que la sesión está fuera de los flujos o estados de la clave. Una clave sin acceso a contenido multimedia recibe las URL de imágenes, videos y PDF como null, y una clave sin permiso de escritura en sesiones recibe los enlaces y tokens de sesión como null. Consulta https://docs.didit.me/console/api-keys.
Cuerpo
La dirección de la wallet. Una X-address de XRP se almacena como su dirección clásica y su tag, por lo que coincide con las transferencias que indiquen cualquiera de las dos formas.
128Token de cadena de la dirección, por ejemplo ETH o BTC. Cuando Didit enruta o registra una transferencia, busca coincidencias en las entradas de la libreta de direcciones por la dirección de la wallet y, cuando la transferencia incluye una cadena, también por este valor, sin distinguir mayúsculas de minúsculas. La cadena de una transferencia es beneficiary_data.chain, que se rellena a partir de la cadena cripto o del símbolo de la moneda de la transacción (por ejemplo ETH) cuando no la envías, o el chain de un registro posterior al depósito, así que usa el mismo token en todas partes. Una entrada con la cadena vacía coincide con cualquier cadena. Las cadenas conocidas se almacenan con un único identificador canónico, sea cual sea la grafía que envíes: "ethereum", "Ethereum" y "ERC20" se almacenan como ETH, "BNB Smart Chain" y "BEP20" como BNB, y "tron" como TRX. Un nombre de cadena desconocido se conserva tal como se envía.
3225525516Solo escritura. Si es true, la entrada se crea con la propiedad ya verificada mediante una prueba SELF_DECLARATION. Devuelve 400 cuando allow_self_declaration está desactivado en tu configuración de Travel Rule.
Opcional. La travel address del VASP de la contraparte para esta wallet, que habilita el enrutamiento TRP para los activos que admite TRP (BTC, ETH y USDC en una red concreta). Una travel address no válida devuelve 400.
512Opcional. La etiqueta de destino o memo que forma parte de la wallet. XRP: una etiqueta de destino, un número entero de 0 a 4294967295 (se acepta un número JSON). XLM: un memo de texto de hasta 28 bytes, un id de 64 bits o un hash de 32 bytes en hexadecimal. EOS: hasta 256 bytes. ATOM: hasta 256 caracteres. HBAR: hasta 100 bytes. Las wallets de Bitcoin, EVM, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin y Lightning no admiten memo: si se envía uno, la respuesta es 400. Alias: destinationTag o destination_tag.
256Respuesta
La entrada creada.
La dirección de la wallet; "" para una entrada importada solo por su hash. Única por aplicación, cadena y memo, comparando la dirección sin distinguir mayúsculas de minúsculas. Después de eliminar una entrada, puedes registrar de nuevo la misma dirección.
Token de cadena de la dirección, por ejemplo ETH o BTC. Cuando Didit enruta o registra una transferencia, busca coincidencias en las entradas de la libreta de direcciones por la dirección de la wallet y, cuando la transferencia incluye una cadena, también por este valor, sin distinguir mayúsculas y minúsculas. La cadena de una transferencia es beneficiary_data.chain, que se rellena a partir de la cadena cripto o del símbolo de la moneda de la transacción (por ejemplo ETH) cuando no la envías, o la chain de un registro posterior al depósito, así que usa el mismo token en todas partes. Una entrada con la cadena vacía coincide con cualquier cadena. Un beneficiario de Lightning (un id de nodo o una Lightning Address) registrado en bitcoin se almacena en minúsculas en LIGHTNING, donde se buscan coincidencias para las transferencias de Lightning. Las cadenas conocidas se almacenan con un único identificador canónico, sea cual sea la grafía que envíes: "ethereum", "Ethereum" y "ERC20" se almacenan como ETH, "BNB Smart Chain" y "BEP20" como BNB, y "tron" como TRX. Un nombre de cadena desconocido se conserva tal como se envió.
Tu identificador interno del titular.
Nombre del titular de la wallet, que se usa para la coincidencia del nombre del beneficiario.
Texto libre; por defecto, "individual".
Solo lectura. Indica si se ha demostrado la propiedad de esta dirección.
La dirección de viaje (travel address) del VASP de la contraparte para esta wallet, si se conoce. Permite a Didit enrutar las transferencias de este beneficiario por el canal TRP, para los activos que admite TRP (BTC, ETH y USDC en una red concreta).
Solo lectura. SHA-256 de la dirección en minúsculas, en hexadecimal en minúsculas. Una entrada importada solo por su hash se compara con este valor.
La etiqueta de destino o memo que forma parte de la wallet en una red con memo (XRP, XLM, EOS, ATOM, HBAR); "" para la dirección completa. Una entrada con memo solo coincide con transferencias que indican ese memo; una sin memo coincide con toda la dirección.
Tu dirección de viaje específica para esta wallet: dásela al VASP emisor para que su consulta TRP identifique esta wallet. Vacía para una wallet registrada como de otro VASP, mientras Travel Rule está desactivada y antes de que se guarde tu perfil de VASP.