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 d'enregistrement d'adresse Travel Rule
Ajoutez un portefeuille que vous contrôlez au carnet d’adresses Travel Rule de Didit pour que les transferts INTERNAL entrants y soient rattachés.
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>"
}Autorisations
La clé API de votre application, issue de Développeurs -> Clés API dans la Business Console. La clé principale dispose d'un accès complet. Une clé nommée peut être restreinte : aucun, lecture ou écriture par ressource, limitée à certains workflows ou aux sessions approuvées, à une liste d'adresses IP et à une date d'expiration. 401 signifie que la clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a été envoyée, que la clé n'a pas accès à cette ressource ou action, ou que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur une route de session signifie que la session est hors des workflows ou des statuts de la clé. Une clé sans accès aux médias reçoit les URL d'images, de vidéos et de PDF à null, et une clé sans accès en écriture aux sessions reçoit les liens et tokens de session à null. Voir https://docs.didit.me/console/api-keys.
Corps
L'adresse du portefeuille. Une X-address XRP est stockée sous sa forme d'adresse classique et son tag, afin de correspondre aux transferts mentionnant l'une ou l'autre forme.
128Token de la blockchain pour l'adresse, par exemple ETH ou BTC. Lorsque Didit achemine ou enregistre un transfert, il fait correspondre les entrées du carnet d'adresses sur l'adresse du portefeuille et, si le transfert comporte une blockchain, sur cette valeur également, sans tenir compte de la casse. La blockchain d'un transfert est beneficiary_data.chain, renseignée à partir de la blockchain crypto ou du symbole de devise de la transaction (par exemple ETH) si vous ne l'envoyez pas, ou à partir du chain d'un enregistrement après dépôt ; utilisez donc le même token partout. Une entrée avec une blockchain vide correspond à n'importe quelle blockchain. Les blockchains connues sont stockées sous un identifiant canonique unique, quelle que soit l'orthographe envoyée : "ethereum", "Ethereum" et "ERC20" sont toutes stockées sous forme d'ETH, "BNB Smart Chain" et "BEP20" sous forme de BNB, "tron" sous forme de TRX. Un nom de blockchain inconnu est conservé tel quel.
3225525516En écriture seule. Lorsque la valeur est true, l'entrée est créée avec un actionnariat déjà vérifié via une preuve SELF_DECLARATION. Renvoie 400 lorsque allow_self_declaration est désactivé dans vos paramètres Travel Rule.
Optionnel. La Travel Address du VASP de contrepartie pour ce portefeuille, activant le routage TRP pour les actifs pris en charge par TRP (BTC, ETH et USDC sur un réseau spécifié). Une Travel Address invalide renvoie 400.
512Facultatif. Le destination tag ou memo associé au portefeuille. XRP : un destination tag, un entier de 0 à 4294967295 (un nombre JSON est accepté). XLM : un memo texte jusqu'à 28 octets, un identifiant 64 bits ou un hachage de 32 octets en hexadécimal. EOS : jusqu'à 256 octets. ATOM : jusqu'à 256 caractères. HBAR : jusqu'à 100 octets. Les portefeuilles Bitcoin, EVM, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin et Lightning ne prennent aucun memo : en renseigner un renvoie une erreur 400. Alias : destinationTag ou destination_tag.
256Réponse
L'entrée créée.
L'adresse du portefeuille ; "" pour une entrée importée uniquement par son hash. Unique par application, chaîne et mémo, en comparant l'adresse sans tenir compte de la casse. Après avoir supprimé une entrée, vous pouvez enregistrer à nouveau la même adresse.
Token de blockchain pour l'adresse, par exemple ETH ou BTC. Lorsque Didit achemine ou enregistre un transfert, il fait correspondre les entrées du carnet d'adresses sur l'adresse du portefeuille et, lorsque le transfert comporte une blockchain, sur cette valeur également, sans distinction de casse. La blockchain d'un transfert est beneficiary_data.chain, renseignée à partir de la blockchain crypto ou du symbole de devise de la transaction (par exemple ETH) si vous ne l'envoyez pas, ou à partir du chain d'un enregistrement après dépôt ; utilisez donc le même token partout. Une entrée avec une blockchain vide correspond à n'importe quelle blockchain. Un bénéficiaire Lightning (un identifiant de nœud ou une adresse Lightning) enregistré sur bitcoin est stocké en minuscules sur LIGHTNING, où les transferts Lightning sont mis en correspondance. Les blockchains connues sont stockées sous un identifiant canonique unique, quelle que soit l'orthographe envoyée : « ethereum », « Ethereum » et « ERC20 » sont toutes stockées sous ETH, « BNB Smart Chain » et « BEP20 » sous BNB, « tron » sous TRX. Un nom de blockchain inconnu est conservé tel quel.
Votre identifiant interne pour le titulaire.
Nom du titulaire du portefeuille, utilisé pour la correspondance du nom du bénéficiaire.
Texte libre, valeur par défaut "individual".
Lecture seule. Indique si la propriété de cette adresse a été prouvée.
La Travel Address du VASP de la contrepartie pour ce portefeuille, si elle est connue. Permet à Didit d'acheminer les transferts de ce bénéficiaire via le canal TRP, pour les actifs pris en charge par TRP (BTC, ETH et USDC sur un réseau désigné).
Lecture seule. SHA-256 de l'adresse en minuscules, au format hexadécimal en minuscules. Une entrée importée uniquement par son hachage est mise en correspondance sur cette valeur.
Le tag de destination ou mémo faisant partie du portefeuille sur un réseau à mémo (XRP, XLM, EOS, ATOM, HBAR) ; "" pour l'adresse entière. Une entrée avec un mémo ne correspond qu'aux transferts mentionnant ce mémo ; une entrée sans mémo correspond à l'adresse entière.
Votre Travel Address par portefeuille pour ce portefeuille : transmettez-la au VASP donneur d'ordre pour que sa demande TRP désigne ce portefeuille. Vide pour un portefeuille enregistré comme appartenant à un autre VASP, tant que Travel Rule est désactivé et avant l'enregistrement de votre profil VASP.