curl --request POST \
--url https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof \
--header 'Content-Type: application/json' \
--data '
{
"updateId": "<string>",
"transfer": {
"sender": "<string>",
"receiver": "<string>",
"amount": "1.0000000000",
"instrumentId": {
"admin": "<string>",
"id": "<string>"
},
"requestedAt": "2023-11-07T05:31:56Z",
"executeBefore": "2023-11-07T05:31:56Z",
"inputHoldingCids": [
"<string>"
],
"meta": {
"values": {}
}
}
}
'import requests
url = "https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof"
payload = {
"updateId": "<string>",
"transfer": {
"sender": "<string>",
"receiver": "<string>",
"amount": "1.0000000000",
"instrumentId": {
"admin": "<string>",
"id": "<string>"
},
"requestedAt": "2023-11-07T05:31:56Z",
"executeBefore": "2023-11-07T05:31:56Z",
"inputHoldingCids": ["<string>"],
"meta": { "values": {} }
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
updateId: '<string>',
transfer: {
sender: '<string>',
receiver: '<string>',
amount: '1.0000000000',
instrumentId: {admin: '<string>', id: '<string>'},
requestedAt: '2023-11-07T05:31:56Z',
executeBefore: '2023-11-07T05:31:56Z',
inputHoldingCids: ['<string>'],
meta: {values: {}}
}
})
};
fetch('https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof', 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.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'updateId' => '<string>',
'transfer' => [
'sender' => '<string>',
'receiver' => '<string>',
'amount' => '1.0000000000',
'instrumentId' => [
'admin' => '<string>',
'id' => '<string>'
],
'requestedAt' => '2023-11-07T05:31:56Z',
'executeBefore' => '2023-11-07T05:31:56Z',
'inputHoldingCids' => [
'<string>'
],
'meta' => [
'values' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"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.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof"
payload := strings.NewReader("{\n \"updateId\": \"<string>\",\n \"transfer\": {\n \"sender\": \"<string>\",\n \"receiver\": \"<string>\",\n \"amount\": \"1.0000000000\",\n \"instrumentId\": {\n \"admin\": \"<string>\",\n \"id\": \"<string>\"\n },\n \"requestedAt\": \"2023-11-07T05:31:56Z\",\n \"executeBefore\": \"2023-11-07T05:31:56Z\",\n \"inputHoldingCids\": [\n \"<string>\"\n ],\n \"meta\": {\n \"values\": {}\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof")
.header("Content-Type", "application/json")
.body("{\n \"updateId\": \"<string>\",\n \"transfer\": {\n \"sender\": \"<string>\",\n \"receiver\": \"<string>\",\n \"amount\": \"1.0000000000\",\n \"instrumentId\": {\n \"admin\": \"<string>\",\n \"id\": \"<string>\"\n },\n \"requestedAt\": \"2023-11-07T05:31:56Z\",\n \"executeBefore\": \"2023-11-07T05:31:56Z\",\n \"inputHoldingCids\": [\n \"<string>\"\n ],\n \"meta\": {\n \"values\": {}\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"updateId\": \"<string>\",\n \"transfer\": {\n \"sender\": \"<string>\",\n \"receiver\": \"<string>\",\n \"amount\": \"1.0000000000\",\n \"instrumentId\": {\n \"admin\": \"<string>\",\n \"id\": \"<string>\"\n },\n \"requestedAt\": \"2023-11-07T05:31:56Z\",\n \"executeBefore\": \"2023-11-07T05:31:56Z\",\n \"inputHoldingCids\": [\n \"<string>\"\n ],\n \"meta\": {\n \"values\": {}\n }\n }\n}"
response = http.request(request)
puts response.read_body{}{
"error": "unknown_error",
"error_description": "Something went wrong"
}{
"error": "unknown_error",
"error_description": "Something went wrong"
}Post apiutilitiesv0registrytransferv0proof
Verify the outcome of a transfer of Registry Utility assets on Canton.
Given an UpdateID and a Transfer Object, the service looks up the corresponding ledger transaction and verifies the transfer details against the on-chain events.
The response status indicates the transfer outcome:
Success: The transfer was executed in the referenced transactionPending: The transfer instruction has been created but not yet settledFailure: The transfer instruction was rejected or withdrawn by one of the parties
If none of the above conditions are met, if the provided transfer details do not match
the on-chain data, or if the original TransferInstruction contract cannot be retrieved,
a 400 is returned. No further diagnostic information is included in
the error response to prevent unintended disclosure of sensitive ledger data.
curl --request POST \
--url https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof \
--header 'Content-Type: application/json' \
--data '
{
"updateId": "<string>",
"transfer": {
"sender": "<string>",
"receiver": "<string>",
"amount": "1.0000000000",
"instrumentId": {
"admin": "<string>",
"id": "<string>"
},
"requestedAt": "2023-11-07T05:31:56Z",
"executeBefore": "2023-11-07T05:31:56Z",
"inputHoldingCids": [
"<string>"
],
"meta": {
"values": {}
}
}
}
'import requests
url = "https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof"
payload = {
"updateId": "<string>",
"transfer": {
"sender": "<string>",
"receiver": "<string>",
"amount": "1.0000000000",
"instrumentId": {
"admin": "<string>",
"id": "<string>"
},
"requestedAt": "2023-11-07T05:31:56Z",
"executeBefore": "2023-11-07T05:31:56Z",
"inputHoldingCids": ["<string>"],
"meta": { "values": {} }
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
updateId: '<string>',
transfer: {
sender: '<string>',
receiver: '<string>',
amount: '1.0000000000',
instrumentId: {admin: '<string>', id: '<string>'},
requestedAt: '2023-11-07T05:31:56Z',
executeBefore: '2023-11-07T05:31:56Z',
inputHoldingCids: ['<string>'],
meta: {values: {}}
}
})
};
fetch('https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof', 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.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'updateId' => '<string>',
'transfer' => [
'sender' => '<string>',
'receiver' => '<string>',
'amount' => '1.0000000000',
'instrumentId' => [
'admin' => '<string>',
'id' => '<string>'
],
'requestedAt' => '2023-11-07T05:31:56Z',
'executeBefore' => '2023-11-07T05:31:56Z',
'inputHoldingCids' => [
'<string>'
],
'meta' => [
'values' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"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.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof"
payload := strings.NewReader("{\n \"updateId\": \"<string>\",\n \"transfer\": {\n \"sender\": \"<string>\",\n \"receiver\": \"<string>\",\n \"amount\": \"1.0000000000\",\n \"instrumentId\": {\n \"admin\": \"<string>\",\n \"id\": \"<string>\"\n },\n \"requestedAt\": \"2023-11-07T05:31:56Z\",\n \"executeBefore\": \"2023-11-07T05:31:56Z\",\n \"inputHoldingCids\": [\n \"<string>\"\n ],\n \"meta\": {\n \"values\": {}\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof")
.header("Content-Type", "application/json")
.body("{\n \"updateId\": \"<string>\",\n \"transfer\": {\n \"sender\": \"<string>\",\n \"receiver\": \"<string>\",\n \"amount\": \"1.0000000000\",\n \"instrumentId\": {\n \"admin\": \"<string>\",\n \"id\": \"<string>\"\n },\n \"requestedAt\": \"2023-11-07T05:31:56Z\",\n \"executeBefore\": \"2023-11-07T05:31:56Z\",\n \"inputHoldingCids\": [\n \"<string>\"\n ],\n \"meta\": {\n \"values\": {}\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"updateId\": \"<string>\",\n \"transfer\": {\n \"sender\": \"<string>\",\n \"receiver\": \"<string>\",\n \"amount\": \"1.0000000000\",\n \"instrumentId\": {\n \"admin\": \"<string>\",\n \"id\": \"<string>\"\n },\n \"requestedAt\": \"2023-11-07T05:31:56Z\",\n \"executeBefore\": \"2023-11-07T05:31:56Z\",\n \"inputHoldingCids\": [\n \"<string>\"\n ],\n \"meta\": {\n \"values\": {}\n }\n }\n}"
response = http.request(request)
puts response.read_body{}{
"error": "unknown_error",
"error_description": "Something went wrong"
}{
"error": "unknown_error",
"error_description": "Something went wrong"
}Body
Request to verify the outcome of a transfer of Registry Utility assets on Canton.
For the two-step transfer workflow, specifies the most recent UpdateId. If the transfer has completed its second step (accept, reject, or withdraw), use the UpdateId associated with that action. Otherwise, use the UpdateId from the initial transfer offer.
The transfer payload containing transaction details known only to the sender and receiver.
Show child attributes
Show child attributes
Response
Transfer proof verified. The status field indicates the transfer outcome
(Success, Pending, or Failure). See the endpoint description for details.
The outcome of verifying a transfer proof.
The status of the transfer proof verification:
Success: The proof is verified and the transfer was successfully concludedFailure: The proof is verified, but the transfer did not successfully conclude.Pending: The transaction is still in progress (e.g., a transfer offer has been sent but not yet accepted in a two-step flow).
Success, Failure, Pending Was this page helpful?