curl --request GET \
--url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso'
import json
import requests
url = "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso"
response = requests.request("GET", url)
print(response.text)
const response = await fetch('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso', {
method: 'GET',
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
]);
$response = curl_exec($curl);
echo $response;
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso", nil)
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("https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'uri'
uri = URI('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"sv_user": "<string>",
"sv_party_id": "<string>",
"dso_party_id": "<string>",
"voting_threshold": 123,
"latest_mining_round": {
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
},
"amulet_rules": {
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
},
"dso_rules": {
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
},
"sv_node_states": [
{
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
}
],
"initial_round": "<string>"
}
GET /v0/dso
Dso info
GET
/
api
/
scan
/
v0
/
dso
curl --request GET \
--url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso'
import json
import requests
url = "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso"
response = requests.request("GET", url)
print(response.text)
const response = await fetch('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso', {
method: 'GET',
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
]);
$response = curl_exec($curl);
echo $response;
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso", nil)
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("https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'uri'
uri = URI('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"sv_user": "<string>",
"sv_party_id": "<string>",
"dso_party_id": "<string>",
"voting_threshold": 123,
"latest_mining_round": {
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
},
"amulet_rules": {
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
},
"dso_rules": {
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
},
"sv_node_states": [
{
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
}
],
"initial_round": "<string>"
}
Dso info
OpenAPIAdded 0.5.10
curl --request GET \
--url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso'
import json
import requests
url = "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso"
response = requests.request("GET", url)
print(response.text)
const response = await fetch('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso', {
method: 'GET',
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
]);
$response = curl_exec($curl);
echo $response;
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso", nil)
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("https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'uri'
uri = URI('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"sv_user": "<string>",
"sv_party_id": "<string>",
"dso_party_id": "<string>",
"voting_threshold": 123,
"latest_mining_round": {
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
},
"amulet_rules": {
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
},
"dso_rules": {
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
},
"sv_node_states": [
{
"contract": {
"template_id": "<string>",
"contract_id": "<string>",
"payload": {},
"created_event_blob": "<string>",
"created_at": "<string>"
},
"domain_id": "<string>"
}
],
"initial_round": "<string>"
}
Responses
200
okapplication/json
string
required
User ID representing the SV
string
required
Party representing the SV
string
required
Party representing the whole DSO; for Scan only, also returned by
/v0/dso-party-idinteger
required
Threshold required to pass vote requests; also known as the “governance threshold”, it is always derived from the number of
svs in dso_rulesContractWithState
required
Contract of the Daml template
Splice.Round.OpenMiningRound, the one with the highest round number on the ledger that has been signed by dso_party_id. The round may not be usable as it may not be opened yet, in accordance with its opensAt template fieldContractWithState
required
Contract of the Daml template
Splice.AmuletRules.AmuletRules, including the full schedule of AmuletConfig changes approved by the DSO. Callers should not assume that initialValue is up-to-date, and should instead search futureValues for the latest configuration valid as of nowContractWithState
required
ContractWithState[]
required
For every one of
svs listed in dso_rules, a contract of the Daml template Splice.DSO.SvState.SvNodeState. This does not include states for offboarded SVs, though they may still have an on-ledger state contractstring
Initial round from which the network bootstraps
History
Added
0.5.10