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"
}Crear o enviar enlace de Travel Rule para usuario final
Crea un enlace de Travel Rule para el usuario final o envíalo por correo con Didit. Incluye caducidad, revocación y resultado de la entrega.
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"} para copiar un enlace, o {"channel": "email"} para intentar también el envío por correo electrónico. Si omites channel, el valor predeterminado es link. El correo electrónico usa la dirección del usuario final registrada en Didit y el idioma de su sesión de verificación, cuando está disponible. No puedes indicar un destinatario arbitrario.
La API requiere permiso de escritura sobre las transacciones y una transferencia saliente en AWAITING_COUNTERPARTY, COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE, UNCONFIRMED_OWNERSHIP u ON_HOLD. Otros estados devuelven 409; una transacción desconocida o una transferencia inexistente devuelve 404.
La respuesta contiene end_user_link, expires_at, emailed_to y email_available. Un nuevo enlace revoca los enlaces abiertos anteriores para el usuario final de esa transferencia. Compártelo solo con el usuario final al que va destinado.
Si no existe un correo electrónico registrado, channel: email devuelve 409 con code: end_user_email_missing; en su lugar, solicita channel: link. Si el envío falla, la API sigue devolviendo un enlace utilizable, con emailed_to vacío. email_available indica que existe una dirección, no que la entrega haya tenido éxito.
Para la elección explícita del usuario durante la creación, consulta Crear una transacción y la guía de la Travel Rule. Para las acciones sobre transferencias, consulta Actualizar una transferencia.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.
Parámetros de ruta
UUID estable de Didit de la transacción a la que pertenece la transferencia.
Cuerpo
link devuelve un enlace nuevo; email también intenta enviarlo al correo electrónico del registro de Didit del usuario final.
link, email Respuesta
Respuesta exitosa.
Nuevo enlace para el usuario final. Los enlaces abiertos anteriores de esta transferencia quedan revocados.
Caducidad del enlace.
Destinatario cuando el envío se realizó correctamente; si no, una cadena vacía. Un fallo del correo sigue devolviendo un enlace utilizable.
Si el usuario final tiene un correo electrónico en su registro de Didit.