curl --request POST \
--url 'http://localhost:7575/v2/parties/external/generate-topology' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}'
import json
import requests
url = "http://localhost:7575/v2/parties/external/generate-topology"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}''')
response = requests.request(
"POST", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('http://localhost:7575/v2/parties/external/generate-topology', {
method: 'POST',
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'http://localhost:7575/v2/parties/external/generate-topology',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}
JSON,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
echo $response;
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "http://localhost:7575/v2/parties/external/generate-topology", bytes.NewBufferString(`{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}`))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
response, _ := http.DefaultClient.Do(req)
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var request = HttpRequest.newBuilder()
.uri(URI.create("http://localhost:7575/v2/parties/external/generate-topology"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}
"""))
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'uri'
uri = URI('http://localhost:7575/v2/parties/external/generate-topology')
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"partyId": "<string>",
"publicKeyFingerprint": "<string>",
"topologyTransactions": [
"<string>"
],
"multiHash": "<string>"
}
<string>
{
"code": "<string>",
"cause": "<string>",
"correlationId": "<string>",
"traceId": "<string>",
"context": {},
"resources": [
[
"<string>"
]
],
"errorCategory": 123,
"grpcCodeValue": 123,
"retryInfo": "<string>",
"definiteAnswer": false
}
POST /v2/parties/external/generate-topology
You may use this endpoint to generate the common external topology transactions which can be signed externally and uploaded as part of the allocate party process Note that this request will create a normal namespace using the same key for the identity as for signing. More elaborate schemes such as multi-signature or decentralized parties require you to construct the topology transactions yourself.
curl --request POST \
--url 'http://localhost:7575/v2/parties/external/generate-topology' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}'
import json
import requests
url = "http://localhost:7575/v2/parties/external/generate-topology"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}''')
response = requests.request(
"POST", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('http://localhost:7575/v2/parties/external/generate-topology', {
method: 'POST',
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'http://localhost:7575/v2/parties/external/generate-topology',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}
JSON,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
echo $response;
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "http://localhost:7575/v2/parties/external/generate-topology", bytes.NewBufferString(`{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}`))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
response, _ := http.DefaultClient.Do(req)
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var request = HttpRequest.newBuilder()
.uri(URI.create("http://localhost:7575/v2/parties/external/generate-topology"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}
"""))
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'uri'
uri = URI('http://localhost:7575/v2/parties/external/generate-topology')
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"partyId": "<string>",
"publicKeyFingerprint": "<string>",
"topologyTransactions": [
"<string>"
],
"multiHash": "<string>"
}
<string>
{
"code": "<string>",
"cause": "<string>",
"correlationId": "<string>",
"traceId": "<string>",
"context": {},
"resources": [
[
"<string>"
]
],
"errorCategory": 123,
"grpcCodeValue": 123,
"retryInfo": "<string>",
"definiteAnswer": false
}
You may use this endpoint to generate the common external topology transactions which can be signed externally and uploaded as part of the allocate party process Note that this request will create a normal namespace using the same key for the identity as for signing. More elaborate schemes such as multi-signature or decentralized parties require you to construct the topology transactions yourself.
curl --request POST \
--url 'http://localhost:7575/v2/parties/external/generate-topology' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}'
import json
import requests
url = "http://localhost:7575/v2/parties/external/generate-topology"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}''')
response = requests.request(
"POST", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('http://localhost:7575/v2/parties/external/generate-topology', {
method: 'POST',
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'http://localhost:7575/v2/parties/external/generate-topology',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}
JSON,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
echo $response;
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "http://localhost:7575/v2/parties/external/generate-topology", bytes.NewBufferString(`{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}`))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
response, _ := http.DefaultClient.Do(req)
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var request = HttpRequest.newBuilder()
.uri(URI.create("http://localhost:7575/v2/parties/external/generate-topology"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}
"""))
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'uri'
uri = URI('http://localhost:7575/v2/parties/external/generate-topology')
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"synchronizer": "<string>",
"partyHint": "<string>",
"publicKey": {
"format": "CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO",
"keyData": "<string>",
"keySpec": "SIGNING_KEY_SPEC_EC_CURVE25519"
},
"localParticipantObservationOnly": false,
"otherConfirmingParticipantUids": [
"<string>"
],
"confirmationThreshold": 123,
"observingParticipantUids": [
"<string>"
]
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"partyId": "<string>",
"publicKeyFingerprint": "<string>",
"topologyTransactions": [
"<string>"
],
"multiHash": "<string>"
}
<string>
{
"code": "<string>",
"cause": "<string>",
"correlationId": "<string>",
"traceId": "<string>",
"context": {},
"resources": [
[
"<string>"
]
],
"errorCategory": 123,
"grpcCodeValue": 123,
"retryInfo": "<string>",
"definiteAnswer": false
}
Authorizations
httpAuth
Authorization: Bearer <token>. Ledger API standard JWT tokenapiKeyAuth
Body
integer (int32).Confirmation threshold >= 1 for the party. Defaults to all available confirmers (or if set to 0). OptionalResponses
200
UntypedVersionedMessage which in turn contains the serialized TopologyTransaction in the version supported by the synchronizer. Required: must be non-empty400
Invalid value, Invalid value for: bodydefault
History
3.5The POST /v2/parties/external/generate-topology operation was updated in this snapshot.
3.4