curl --request POST \
--url 'http://localhost:7575/v2/commands/submit-and-wait-for-transaction' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}'
import json
import requests
url = "http://localhost:7575/v2/commands/submit-and-wait-for-transaction"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}''')
response = requests.request(
"POST", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('http://localhost:7575/v2/commands/submit-and-wait-for-transaction', {
method: 'POST',
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'http://localhost:7575/v2/commands/submit-and-wait-for-transaction',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}
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/commands/submit-and-wait-for-transaction", bytes.NewBufferString(`{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}`))
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/commands/submit-and-wait-for-transaction"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}
"""))
.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/commands/submit-and-wait-for-transaction')
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"transaction": {
"updateId": "<string>",
"commandId": "<string>",
"workflowId": "<string>",
"effectiveAt": "<string>",
"events": [
{
"ArchivedEvent": {
"offset": 123,
"nodeId": 123,
"contractId": "<string>",
"templateId": "<string>",
"witnessParties": [
"<string>"
],
"packageName": "<string>",
"implementedInterfaces": [
"<string>"
]
}
}
],
"offset": 123,
"synchronizerId": "<string>",
"traceContext": {
"traceparent": "<string>",
"tracestate": "<string>"
},
"recordTime": "<string>",
"externalTransactionHash": "<string>",
"paidTrafficCost": 123
}
}
<string>
{
"code": "<string>",
"cause": "<string>",
"correlationId": "<string>",
"traceId": "<string>",
"context": {},
"resources": [
[
"<string>"
]
],
"errorCategory": 123,
"grpcCodeValue": 123,
"retryInfo": "<string>",
"definiteAnswer": false
}
POST /v2/commands/submit-and-wait-for-transaction
Submits a single composite command, waits for its result, and returns the transaction. Propagates the gRPC error of failed submissions including Daml interpretation errors.
curl --request POST \
--url 'http://localhost:7575/v2/commands/submit-and-wait-for-transaction' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}'
import json
import requests
url = "http://localhost:7575/v2/commands/submit-and-wait-for-transaction"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}''')
response = requests.request(
"POST", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('http://localhost:7575/v2/commands/submit-and-wait-for-transaction', {
method: 'POST',
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'http://localhost:7575/v2/commands/submit-and-wait-for-transaction',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}
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/commands/submit-and-wait-for-transaction", bytes.NewBufferString(`{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}`))
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/commands/submit-and-wait-for-transaction"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}
"""))
.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/commands/submit-and-wait-for-transaction')
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"transaction": {
"updateId": "<string>",
"commandId": "<string>",
"workflowId": "<string>",
"effectiveAt": "<string>",
"events": [
{
"ArchivedEvent": {
"offset": 123,
"nodeId": 123,
"contractId": "<string>",
"templateId": "<string>",
"witnessParties": [
"<string>"
],
"packageName": "<string>",
"implementedInterfaces": [
"<string>"
]
}
}
],
"offset": 123,
"synchronizerId": "<string>",
"traceContext": {
"traceparent": "<string>",
"tracestate": "<string>"
},
"recordTime": "<string>",
"externalTransactionHash": "<string>",
"paidTrafficCost": 123
}
}
<string>
{
"code": "<string>",
"cause": "<string>",
"correlationId": "<string>",
"traceId": "<string>",
"context": {},
"resources": [
[
"<string>"
]
],
"errorCategory": 123,
"grpcCodeValue": 123,
"retryInfo": "<string>",
"definiteAnswer": false
}
Submits a single composite command, waits for its result, and returns the transaction. Propagates the gRPC error of failed submissions including Daml interpretation errors.
curl --request POST \
--url 'http://localhost:7575/v2/commands/submit-and-wait-for-transaction' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}'
import json
import requests
url = "http://localhost:7575/v2/commands/submit-and-wait-for-transaction"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}''')
response = requests.request(
"POST", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('http://localhost:7575/v2/commands/submit-and-wait-for-transaction', {
method: 'POST',
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'http://localhost:7575/v2/commands/submit-and-wait-for-transaction',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}
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/commands/submit-and-wait-for-transaction", bytes.NewBufferString(`{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}`))
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/commands/submit-and-wait-for-transaction"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}
"""))
.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/commands/submit-and-wait-for-transaction')
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"commands": {
"commands": [
{
"CreateAndExerciseCommand": {
"templateId": "<string>",
"createArguments": "<string>",
"choice": "<string>",
"choiceArgument": "<string>"
}
}
],
"commandId": "<string>",
"actAs": [
"<string>"
],
"userId": "<string>",
"readAs": [
"<string>"
],
"workflowId": "<string>",
"deduplicationPeriod": {
"DeduplicationDuration": {
"value": {
"seconds": 123,
"nanos": 123,
"unknownFields": "<object>"
}
}
},
"minLedgerTimeAbs": "<string>",
"minLedgerTimeRel": {
"seconds": 123,
"nanos": 123,
"unknownFields": {
"fields": {}
}
},
"submissionId": "<string>",
"disclosedContracts": [
{
"templateId": "<string>",
"contractId": "<string>",
"createdEventBlob": "<string>",
"synchronizerId": "<string>"
}
],
"synchronizerId": "<string>",
"packageIdSelectionPreference": [
"<string>"
],
"prefetchContractKeys": [
{
"templateId": "<string>",
"contractKey": "<string>",
"limit": 123
}
],
"tapsMaxPasses": 123
},
"transactionFormat": {
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": "<object>"
}
]
},
"verbose": false
},
"transactionShape": "TRANSACTION_SHAPE_UNSPECIFIED"
}
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"transaction": {
"updateId": "<string>",
"commandId": "<string>",
"workflowId": "<string>",
"effectiveAt": "<string>",
"events": [
{
"ArchivedEvent": {
"offset": 123,
"nodeId": 123,
"contractId": "<string>",
"templateId": "<string>",
"witnessParties": [
"<string>"
],
"packageName": "<string>",
"implementedInterfaces": [
"<string>"
]
}
}
],
"offset": 123,
"synchronizerId": "<string>",
"traceContext": {
"traceparent": "<string>",
"tracestate": "<string>"
},
"recordTime": "<string>",
"externalTransactionHash": "<string>",
"paidTrafficCost": 123
}
}
<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
JsCommands.A composite command that groups multiple commands together.Show child attributes
Show child attributes
Command[].Individual elements of this atomic command. Must be non-empty. Required: must be non-emptyShow child attributes
Show child attributes
Show child attributes
Show child attributes
CreateAndExerciseCommand.Create a contract and exercise a choice on it in the same transaction.Show child attributes
Show child attributes
value.proto). RequiredShow child attributes
Show child attributes
CreateCommand.Create a new contract instance based on a template.Show child attributes
Show child attributes
Show child attributes
Show child attributes
ExerciseByKeyCommand.Exercise a choice on an existing contract specified by its key.Show child attributes
Show child attributes
value.proto) RequiredShow child attributes
Show child attributes
ExerciseCommand.Exercise a choice on an existing contract.Show child attributes
Show child attributes
value.proto). Requiredvalue.proto) Requiredvalue.proto). Requiredvalue.proto). Required: must be non-emptyvalue.proto). Required unless authentication is used with a user token. In that case, the token’s user-id will be used for the request’s user_id. Optionalact_as) contracts can be retrieved. This affects Daml operations such as fetch, fetchByKey, lookupByKey, exercise, and exerciseByKey. Note: A participant node of a Daml network can host multiple parties. Each contract present on the participant node is only visible to a subset of these parties. A command can only use contracts that are visible to at least one of the parties in act_as or read_as. This visibility check is independent from the Daml authorization rules for fetch operations. If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request to read contract data on behalf of each of the given parties. Optional: can be emptyvalue.proto). OptionalDeduplicationPeriod.Specifies the deduplication period for the change ID. If omitted, the participant will assume the configured maximum deduplication time. OptionalShow child attributes
Show child attributes
Show child attributes
Show child attributes
DeduplicationDuration.Show child attributes
Show child attributes
Duration.Duration.Same as min_ledger_time_abs, but specified as a duration, starting from the time the command is received by the server. Must not be set at the same time as min_ledger_time_abs. Optionalvalue.proto). If omitted, the participant or the committer may set a value of their choice. OptionalDisclosedContract[].Additional contracts used to resolve contract & contract key lookups. Optional: can be emptyShow child attributes
Show child attributes
PrefetchContractKey[].Fetches the contract keys into the caches to speed up the command processing. Each entry specifies a key and a limit on how many contracts to prefetch for that key. The limit does not count disclosed contracts, and should reflect the number of additional contracts expected to be resolved during interpretation of the commands. If a key appears multiple times, the last entry’s limit wins. Optional: can be emptyShow child attributes
Show child attributes
integer (int32).The number of contracts to prefetch for this key, if available. This is in addition to disclosed contracts. - for backward compatibility reason, absence is interpreted as 1 - 0 is forbidden - capped at 2^31 - 1. The system may impose further limits. Optionalinteger (int32).The maximum number of passes for the Topology-Aware Package Selection (TAPS). Higher values can increase the chance of successful package selection for routing of interpreted transactions. If unset, this defaults to the value defined in the participant configuration. The provided value must not exceed the limit specified in the participant configuration. OptionalTransactionFormat.A format that specifies what events to include in Daml transactions and what data to compute and include for them.Show child attributes
Show child attributes
EventFormat.A format for events which defines both which events should be included and what data should be computed and included for them. Note that some of the filtering behavior depends on the TransactionShape, which is expected to be specified alongside usages of EventFormat.Show child attributes
Show child attributes
Map_Filters.Each key must be a valid PartyIdString (as described in value.proto). The interpretation of the filter depends on the transaction-shape being filtered: 1. For ledger-effects create and exercise events are returned, for which the witnesses include at least one of the listed parties and match the per-party filter. 2. For transaction and active-contract-set streams create and archive events are returned for all contracts whose stakeholders include at least one of the listed parties and match the per-party filter. Optional: can be emptyFilters.The union of a set of template filters, interface filters, or a wildcard.Show child attributes
Show child attributes
CumulativeFilter[].Every filter in the cumulative list expands the scope of the resulting stream. Each interface, template or wildcard filter means additional events that will match the query. The impact of include_interface_view and include_created_event_blob fields in the filters will also be accumulated. A template or an interface SHOULD NOT appear twice in the accumulative field. A wildcard filter SHOULD NOT be defined more than once in the accumulative field. If no CumulativeFilter defined, the default of a single WildcardFilter with include_created_event_blob unset is used. Optional: can be emptyShow child attributes
Show child attributes
IdentifierFilter.RequiredShow child attributes
Show child attributes
Show child attributes
Show child attributes
InterfaceFilter.This filter matches contracts that implement a specific interface.Show child attributes
Show child attributes
InterfaceFilter1.This filter matches contracts that implement a specific interface.Show child attributes
Show child attributes
interface_id needs to be valid: corresponding interface should be defined in one of the available packages at the time of the query. Both package-name and package-id reference formats for the identifier are supported. Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. RequiredCreatedEvent. Use this to access contract data in a uniform manner in your API client. Optionalcreated_event_blob in the returned CreatedEvent. Use this to access the contract create event payload in your API client for submitting it as a disclosed contract with future commands. OptionalShow child attributes
Show child attributes
TemplateFilter.This filter matches contracts of a specific template.Show child attributes
Show child attributes
TemplateFilter1.This filter matches contracts of a specific template.Show child attributes
Show child attributes
template_id needs to be valid: corresponding template should be defined in one of the available packages at the time of the query. Both package-name and package-id reference formats for the identifier are supported. Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. Requiredcreated_event_blob in the returned CreatedEvent. Use this to access the contract event payload in your API client for submitting it as a disclosed contract with future commands. OptionalShow child attributes
Show child attributes
WildcardFilter.This filter matches all templates.Show child attributes
Show child attributes
WildcardFilter1.This filter matches all templates.Show child attributes
Show child attributes
created_event_blob in the returned CreatedEvent. Use this to access the contract create event payload in your API client for submitting it as a disclosed contract with future commands. OptionalTRANSACTION_SHAPE_UNSPECIFIED, TRANSACTION_SHAPE_ACS_DELTA, TRANSACTION_SHAPE_LEDGER_EFFECTS.Responses
200
Show child attributes
Show child attributes
value.proto). Requiredvalue.proto). Optionalvalue.proto). OptionalCreatedEvent or ArchivedEvent in case of ACS_DELTA transaction shape - CreatedEvent or ExercisedEvent in case of LEDGER_EFFECTS transaction shape Required: must be non-emptyShow child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
value.proto). RequiredArchivedEvent, these are the intersection of the stakeholders of the contract in question and the parties specified in the TransactionFilter. The stakeholders are the union of the signatories and the observers of the contract. Each one of its elements must be a valid PartyIdString (as described in value.proto). Required: must be non-emptyShow child attributes
Show child attributes
Show child attributes
Show child attributes
value.proto). Requiredtemplate_id defines a contract key. Optionaltemplate_id defines a contract key. Optional: can be emptyInterfaceView for each interface for which there is a InterfaceFilter with - its party in the witness_parties of this event, - and which is implemented by the template of this event, - and which has include_interface_view set. Optional: can be emptyShow child attributes
Show child attributes
InterfaceFilter and it could be successfully computed. OptionalCreatedEvent is returned as part of a transaction tree or ledger-effects transaction, this will include all the parties specified in the TransactionFilter that are witnesses of the event (the stakeholders of the contract and all informees of all the ancestors of this create action that this participant knows about). If served as part of a ACS delta transaction those will be limited to all parties specified in the TransactionFilter that are stakeholders of the contract (i.e. either signatories or observers). If the CreatedEvent is returned as part of an AssignedEvent, ActiveContract or IncompleteUnassigned (so the event is related to an assignment or unassignment): this will include all parties of the TransactionFilter that are stakeholders of the contract. The behavior of reading create events visible to parties not hosted on the participant node serving the Ledger API is undefined. Concretely, there is neither a guarantee that the participant node will serve all their create events on the ACS stream, nor is there a guarantee that matching archive events are delivered for such create events. For most clients this is not a problem, as they only read events for parties that are hosted on the participant node. If you need to read events for parties that may not be hosted at all times on the participant node, subscribe to the TopologyEvents for that party by setting a corresponding UpdateFormat. Using these events, query the ACS as-of an offset where the party is hosted on the participant node, and ignore create events at offsets where the party is not hosted on the participant node. Required: must be non-emptyShow child attributes
Show child attributes
Show child attributes
Show child attributes
value.proto). Requiredvalue.proto). Requiredvalue.proto). Required: must be non-emptychoice ... controller syntax, and said controllers are not explicitly marked as observers. Each element must be a valid PartyIdString (as described in value.proto). Required: must be non-emptyExercisedEvent. This allows unambiguous identification of all the members of the subtree rooted at this node. A full subtree can be constructed when all descendant nodes are present in the stream. If nodes are heavily filtered, it is only possible to determine if a node is in a consequent subtree or not. Requiredcommunity/ledger-api/README.md. It is a valid absolute offset (positive integer). RequiredShow child attributes
Show child attributes
400
Invalid value, Invalid value for: bodydefault
History
3.5The POST /v2/commands/submit-and-wait-for-transaction operation was updated in this snapshot.
3.4