Update request for information
curl --request PUT \
--url https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"originatorProof": {
"type": "self-declaration",
"did": "did:pkh:xrpl:0:rExampleAddress123456789",
"address": "xrpl:0:rExampleAddress123456789",
"attestation": "I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.",
"confirmed": true,
"status": "verified"
},
"transactionAsset": {
"caip19": "xrpl:0/slip44:144"
},
"transactionAmount": "4000000",
"originatorEqualsBeneficiary": true,
"beneficiaryVASPdid": "did:ethr:0xExampleVASPAddress000000000000000000000000",
"originatorVASPdid": "did:pkh:xrpl:0:rExampleAddress123456789",
"beneficiary": {},
"originator": {
"originatorPersons": [
{
"naturalPerson": {
"name": {
"nameIdentifier": [
{
"primaryIdentifier": "Doe",
"secondaryIdentifier": "John",
"nameIdentifierType": "LEGL"
}
]
}
}
}
]
}
}
}
'import requests
url = "https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}"
payload = { "data": {
"originatorProof": {
"type": "self-declaration",
"did": "did:pkh:xrpl:0:rExampleAddress123456789",
"address": "xrpl:0:rExampleAddress123456789",
"attestation": "I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.",
"confirmed": True,
"status": "verified"
},
"transactionAsset": { "caip19": "xrpl:0/slip44:144" },
"transactionAmount": "4000000",
"originatorEqualsBeneficiary": True,
"beneficiaryVASPdid": "did:ethr:0xExampleVASPAddress000000000000000000000000",
"originatorVASPdid": "did:pkh:xrpl:0:rExampleAddress123456789",
"beneficiary": {},
"originator": { "originatorPersons": [{ "naturalPerson": { "name": { "nameIdentifier": [
{
"primaryIdentifier": "Doe",
"secondaryIdentifier": "John",
"nameIdentifierType": "LEGL"
}
] } } }] }
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
data: {
originatorProof: {
type: 'self-declaration',
did: 'did:pkh:xrpl:0:rExampleAddress123456789',
address: 'xrpl:0:rExampleAddress123456789',
attestation: 'I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.',
confirmed: true,
status: 'verified'
},
transactionAsset: {caip19: 'xrpl:0/slip44:144'},
transactionAmount: '4000000',
originatorEqualsBeneficiary: true,
beneficiaryVASPdid: 'did:ethr:0xExampleVASPAddress000000000000000000000000',
originatorVASPdid: 'did:pkh:xrpl:0:rExampleAddress123456789',
beneficiary: {},
originator: {
originatorPersons: [
{
naturalPerson: {
name: {
nameIdentifier: [
{
primaryIdentifier: 'Doe',
secondaryIdentifier: 'John',
nameIdentifierType: 'LEGL'
}
]
}
}
}
]
}
}
})
};
fetch('https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'originatorProof' => [
'type' => 'self-declaration',
'did' => 'did:pkh:xrpl:0:rExampleAddress123456789',
'address' => 'xrpl:0:rExampleAddress123456789',
'attestation' => 'I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.',
'confirmed' => true,
'status' => 'verified'
],
'transactionAsset' => [
'caip19' => 'xrpl:0/slip44:144'
],
'transactionAmount' => '4000000',
'originatorEqualsBeneficiary' => true,
'beneficiaryVASPdid' => 'did:ethr:0xExampleVASPAddress000000000000000000000000',
'originatorVASPdid' => 'did:pkh:xrpl:0:rExampleAddress123456789',
'beneficiary' => [
],
'originator' => [
'originatorPersons' => [
[
'naturalPerson' => [
'name' => [
'nameIdentifier' => [
[
'primaryIdentifier' => 'Doe',
'secondaryIdentifier' => 'John',
'nameIdentifierType' => 'LEGL'
]
]
]
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}"
payload := strings.NewReader("{\n \"data\": {\n \"originatorProof\": {\n \"type\": \"self-declaration\",\n \"did\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"address\": \"xrpl:0:rExampleAddress123456789\",\n \"attestation\": \"I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.\",\n \"confirmed\": true,\n \"status\": \"verified\"\n },\n \"transactionAsset\": {\n \"caip19\": \"xrpl:0/slip44:144\"\n },\n \"transactionAmount\": \"4000000\",\n \"originatorEqualsBeneficiary\": true,\n \"beneficiaryVASPdid\": \"did:ethr:0xExampleVASPAddress000000000000000000000000\",\n \"originatorVASPdid\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"beneficiary\": {},\n \"originator\": {\n \"originatorPersons\": [\n {\n \"naturalPerson\": {\n \"name\": {\n \"nameIdentifier\": [\n {\n \"primaryIdentifier\": \"Doe\",\n \"secondaryIdentifier\": \"John\",\n \"nameIdentifierType\": \"LEGL\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"originatorProof\": {\n \"type\": \"self-declaration\",\n \"did\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"address\": \"xrpl:0:rExampleAddress123456789\",\n \"attestation\": \"I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.\",\n \"confirmed\": true,\n \"status\": \"verified\"\n },\n \"transactionAsset\": {\n \"caip19\": \"xrpl:0/slip44:144\"\n },\n \"transactionAmount\": \"4000000\",\n \"originatorEqualsBeneficiary\": true,\n \"beneficiaryVASPdid\": \"did:ethr:0xExampleVASPAddress000000000000000000000000\",\n \"originatorVASPdid\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"beneficiary\": {},\n \"originator\": {\n \"originatorPersons\": [\n {\n \"naturalPerson\": {\n \"name\": {\n \"nameIdentifier\": [\n {\n \"primaryIdentifier\": \"Doe\",\n \"secondaryIdentifier\": \"John\",\n \"nameIdentifierType\": \"LEGL\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"originatorProof\": {\n \"type\": \"self-declaration\",\n \"did\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"address\": \"xrpl:0:rExampleAddress123456789\",\n \"attestation\": \"I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.\",\n \"confirmed\": true,\n \"status\": \"verified\"\n },\n \"transactionAsset\": {\n \"caip19\": \"xrpl:0/slip44:144\"\n },\n \"transactionAmount\": \"4000000\",\n \"originatorEqualsBeneficiary\": true,\n \"beneficiaryVASPdid\": \"did:ethr:0xExampleVASPAddress000000000000000000000000\",\n \"originatorVASPdid\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"beneficiary\": {},\n \"originator\": {\n \"originatorPersons\": [\n {\n \"naturalPerson\": {\n \"name\": {\n \"nameIdentifier\": [\n {\n \"primaryIdentifier\": \"Doe\",\n \"secondaryIdentifier\": \"John\",\n \"nameIdentifierType\": \"LEGL\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"requestForInformation": {
"id": "3f6d0c1e-a1bf-4b25-9802-2a3ee492d3c8",
"referenceId": "3f6d0c1e-a1bf-4b25-9802-2a3ee492d3c8",
"type": "travel-rule",
"status": "ok",
"data": {
"originatorProof": {
"type": "self-declaration",
"did": "did:pkh:xrpl:0:rExampleAddress123456789",
"address": "xrpl:0:rExampleAddress123456789",
"attestation": "I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.",
"confirmed": true,
"status": "verified"
},
"transactionAsset": {
"caip19": "xrpl:0/slip44:144"
},
"transactionAmount": "4000000",
"originatorEqualsBeneficiary": true,
"beneficiaryVASPdid": "did:ethr:0xExampleVASPAddress000000000000000000000000",
"originatorVASPdid": "did:pkh:xrpl:0:rExampleAddress123456789",
"beneficiary": {},
"originator": {
"originatorPersons": [
{
"naturalPerson": {
"name": {
"nameIdentifier": [
{
"primaryIdentifier": "Doe",
"secondaryIdentifier": "John",
"nameIdentifierType": "LEGL"
}
]
}
}
}
]
}
},
"createdAt": "2024-07-25T10:00:00.000Z",
"expiresAt": "2024-08-08T10:00:00.000Z",
"updatedAt": "2024-07-30T10:00:00.000Z"
}
}Requests for information
Update request for information
Update an existing request for information.
PUT
/
core
/
requests-for-information
/
{requestForInformationId}
Update request for information
curl --request PUT \
--url https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"originatorProof": {
"type": "self-declaration",
"did": "did:pkh:xrpl:0:rExampleAddress123456789",
"address": "xrpl:0:rExampleAddress123456789",
"attestation": "I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.",
"confirmed": true,
"status": "verified"
},
"transactionAsset": {
"caip19": "xrpl:0/slip44:144"
},
"transactionAmount": "4000000",
"originatorEqualsBeneficiary": true,
"beneficiaryVASPdid": "did:ethr:0xExampleVASPAddress000000000000000000000000",
"originatorVASPdid": "did:pkh:xrpl:0:rExampleAddress123456789",
"beneficiary": {},
"originator": {
"originatorPersons": [
{
"naturalPerson": {
"name": {
"nameIdentifier": [
{
"primaryIdentifier": "Doe",
"secondaryIdentifier": "John",
"nameIdentifierType": "LEGL"
}
]
}
}
}
]
}
}
}
'import requests
url = "https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}"
payload = { "data": {
"originatorProof": {
"type": "self-declaration",
"did": "did:pkh:xrpl:0:rExampleAddress123456789",
"address": "xrpl:0:rExampleAddress123456789",
"attestation": "I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.",
"confirmed": True,
"status": "verified"
},
"transactionAsset": { "caip19": "xrpl:0/slip44:144" },
"transactionAmount": "4000000",
"originatorEqualsBeneficiary": True,
"beneficiaryVASPdid": "did:ethr:0xExampleVASPAddress000000000000000000000000",
"originatorVASPdid": "did:pkh:xrpl:0:rExampleAddress123456789",
"beneficiary": {},
"originator": { "originatorPersons": [{ "naturalPerson": { "name": { "nameIdentifier": [
{
"primaryIdentifier": "Doe",
"secondaryIdentifier": "John",
"nameIdentifierType": "LEGL"
}
] } } }] }
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
data: {
originatorProof: {
type: 'self-declaration',
did: 'did:pkh:xrpl:0:rExampleAddress123456789',
address: 'xrpl:0:rExampleAddress123456789',
attestation: 'I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.',
confirmed: true,
status: 'verified'
},
transactionAsset: {caip19: 'xrpl:0/slip44:144'},
transactionAmount: '4000000',
originatorEqualsBeneficiary: true,
beneficiaryVASPdid: 'did:ethr:0xExampleVASPAddress000000000000000000000000',
originatorVASPdid: 'did:pkh:xrpl:0:rExampleAddress123456789',
beneficiary: {},
originator: {
originatorPersons: [
{
naturalPerson: {
name: {
nameIdentifier: [
{
primaryIdentifier: 'Doe',
secondaryIdentifier: 'John',
nameIdentifierType: 'LEGL'
}
]
}
}
}
]
}
}
})
};
fetch('https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'originatorProof' => [
'type' => 'self-declaration',
'did' => 'did:pkh:xrpl:0:rExampleAddress123456789',
'address' => 'xrpl:0:rExampleAddress123456789',
'attestation' => 'I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.',
'confirmed' => true,
'status' => 'verified'
],
'transactionAsset' => [
'caip19' => 'xrpl:0/slip44:144'
],
'transactionAmount' => '4000000',
'originatorEqualsBeneficiary' => true,
'beneficiaryVASPdid' => 'did:ethr:0xExampleVASPAddress000000000000000000000000',
'originatorVASPdid' => 'did:pkh:xrpl:0:rExampleAddress123456789',
'beneficiary' => [
],
'originator' => [
'originatorPersons' => [
[
'naturalPerson' => [
'name' => [
'nameIdentifier' => [
[
'primaryIdentifier' => 'Doe',
'secondaryIdentifier' => 'John',
'nameIdentifierType' => 'LEGL'
]
]
]
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}"
payload := strings.NewReader("{\n \"data\": {\n \"originatorProof\": {\n \"type\": \"self-declaration\",\n \"did\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"address\": \"xrpl:0:rExampleAddress123456789\",\n \"attestation\": \"I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.\",\n \"confirmed\": true,\n \"status\": \"verified\"\n },\n \"transactionAsset\": {\n \"caip19\": \"xrpl:0/slip44:144\"\n },\n \"transactionAmount\": \"4000000\",\n \"originatorEqualsBeneficiary\": true,\n \"beneficiaryVASPdid\": \"did:ethr:0xExampleVASPAddress000000000000000000000000\",\n \"originatorVASPdid\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"beneficiary\": {},\n \"originator\": {\n \"originatorPersons\": [\n {\n \"naturalPerson\": {\n \"name\": {\n \"nameIdentifier\": [\n {\n \"primaryIdentifier\": \"Doe\",\n \"secondaryIdentifier\": \"John\",\n \"nameIdentifierType\": \"LEGL\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"originatorProof\": {\n \"type\": \"self-declaration\",\n \"did\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"address\": \"xrpl:0:rExampleAddress123456789\",\n \"attestation\": \"I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.\",\n \"confirmed\": true,\n \"status\": \"verified\"\n },\n \"transactionAsset\": {\n \"caip19\": \"xrpl:0/slip44:144\"\n },\n \"transactionAmount\": \"4000000\",\n \"originatorEqualsBeneficiary\": true,\n \"beneficiaryVASPdid\": \"did:ethr:0xExampleVASPAddress000000000000000000000000\",\n \"originatorVASPdid\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"beneficiary\": {},\n \"originator\": {\n \"originatorPersons\": [\n {\n \"naturalPerson\": {\n \"name\": {\n \"nameIdentifier\": [\n {\n \"primaryIdentifier\": \"Doe\",\n \"secondaryIdentifier\": \"John\",\n \"nameIdentifierType\": \"LEGL\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.enterprise.sandbox.uphold.com/core/requests-for-information/{requestForInformationId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"originatorProof\": {\n \"type\": \"self-declaration\",\n \"did\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"address\": \"xrpl:0:rExampleAddress123456789\",\n \"attestation\": \"I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.\",\n \"confirmed\": true,\n \"status\": \"verified\"\n },\n \"transactionAsset\": {\n \"caip19\": \"xrpl:0/slip44:144\"\n },\n \"transactionAmount\": \"4000000\",\n \"originatorEqualsBeneficiary\": true,\n \"beneficiaryVASPdid\": \"did:ethr:0xExampleVASPAddress000000000000000000000000\",\n \"originatorVASPdid\": \"did:pkh:xrpl:0:rExampleAddress123456789\",\n \"beneficiary\": {},\n \"originator\": {\n \"originatorPersons\": [\n {\n \"naturalPerson\": {\n \"name\": {\n \"nameIdentifier\": [\n {\n \"primaryIdentifier\": \"Doe\",\n \"secondaryIdentifier\": \"John\",\n \"nameIdentifierType\": \"LEGL\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"requestForInformation": {
"id": "3f6d0c1e-a1bf-4b25-9802-2a3ee492d3c8",
"referenceId": "3f6d0c1e-a1bf-4b25-9802-2a3ee492d3c8",
"type": "travel-rule",
"status": "ok",
"data": {
"originatorProof": {
"type": "self-declaration",
"did": "did:pkh:xrpl:0:rExampleAddress123456789",
"address": "xrpl:0:rExampleAddress123456789",
"attestation": "I hereby declare that the blockchain address rExampleAddress123456789 is under my own control and ownership.",
"confirmed": true,
"status": "verified"
},
"transactionAsset": {
"caip19": "xrpl:0/slip44:144"
},
"transactionAmount": "4000000",
"originatorEqualsBeneficiary": true,
"beneficiaryVASPdid": "did:ethr:0xExampleVASPAddress000000000000000000000000",
"originatorVASPdid": "did:pkh:xrpl:0:rExampleAddress123456789",
"beneficiary": {},
"originator": {
"originatorPersons": [
{
"naturalPerson": {
"name": {
"nameIdentifier": [
{
"primaryIdentifier": "Doe",
"secondaryIdentifier": "John",
"nameIdentifierType": "LEGL"
}
]
}
}
}
]
}
},
"createdAt": "2024-07-25T10:00:00.000Z",
"expiresAt": "2024-08-08T10:00:00.000Z",
"updatedAt": "2024-07-30T10:00:00.000Z"
}
}
Update request for information submits the
data needed to resolve a pending RFI (e.g. Travel Rule originator/beneficiary information), transitioning its status away from pending.
If the RFI has expired (check the
expiresAt timestamp), the endpoint returns a 409 request_for_information_expired error. Create a new quote with the same destination parameters to generate a fresh RFI.This endpoint returns a
409 operation_not_allowed error if the RFI status is not pending — for example, if it has already been resolved or has expired. Unlike the deprecated transaction-nested endpoint, this endpoint does not fall back to a 200 response with warnings in this situation. Integrations must handle the 409 case.Authorizations
OAuth 2.0 authentication.
Path Parameters
The request for information id.
Body
application/json
The data needed to resolve the RFI.
Response
Request for information updated.
Show child attributes
Show child attributes
Was this page helpful?
⌘I