Skip to content
CCPEDIAby Unity Nodes
Documentation/Canton Network Docs/Ledger APIOpenAPIView on Canton Network Docs

POST /v2/interactive-submission/executeAndWait

POST
/
v2
/
interactive-submission
/
executeAndWait
Try it
cURL
Python
JavaScript
PHP
Go
Java
Ruby
curl --request POST \
  --url 'http://localhost:7575/v2/interactive-submission/executeAndWait' \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}'
import json
import requests

url = "http://localhost:7575/v2/interactive-submission/executeAndWait"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}''')
response = requests.request(
    "POST", url, headers=headers, json=payload
)

print(response.text)
const response = await fetch('http://localhost:7575/v2/interactive-submission/executeAndWait', {
  method: 'POST',
  headers: {
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
},
  body: JSON.stringify({
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}),
});

console.log(await response.text());
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'http://localhost:7575/v2/interactive-submission/executeAndWait',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => <<<'JSON'
{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}
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/interactive-submission/executeAndWait", bytes.NewBufferString(`{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}`))
  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/interactive-submission/executeAndWait"))
    .header("Authorization", "Bearer <token>")
    .header("Content-Type", "application/json")
    .method("POST", HttpRequest.BodyPublishers.ofString("""
{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}
"""))
    .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/interactive-submission/executeAndWait')
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(request)
end
puts response.body
200
400
default
{
  "updateId": "<string>",
  "completionOffset": 123
}
<string>
{
  "code": "<string>",
  "cause": "<string>",
  "correlationId": "<string>",
  "traceId": "<string>",
  "context": {},
  "resources": [
    [
      "<string>"
    ]
  ],
  "errorCategory": 123,
  "grpcCodeValue": 123,
  "retryInfo": "<string>",
  "definiteAnswer": false
}

Similar to ExecuteSubmission but synchronously wait for the completion of the transaction

cURL
Python
JavaScript
PHP
Go
Java
Ruby
curl --request POST \
  --url 'http://localhost:7575/v2/interactive-submission/executeAndWait' \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}'
import json
import requests

url = "http://localhost:7575/v2/interactive-submission/executeAndWait"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}''')
response = requests.request(
    "POST", url, headers=headers, json=payload
)

print(response.text)
const response = await fetch('http://localhost:7575/v2/interactive-submission/executeAndWait', {
  method: 'POST',
  headers: {
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
},
  body: JSON.stringify({
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}),
});

console.log(await response.text());
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'http://localhost:7575/v2/interactive-submission/executeAndWait',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => <<<'JSON'
{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}
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/interactive-submission/executeAndWait", bytes.NewBufferString(`{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}`))
  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/interactive-submission/executeAndWait"))
    .header("Authorization", "Bearer <token>")
    .header("Content-Type", "application/json")
    .method("POST", HttpRequest.BodyPublishers.ofString("""
{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}
"""))
    .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/interactive-submission/executeAndWait')
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
  "preparedTransaction": "<string>",
  "partySignatures": {
    "signatures": [
      {
        "party": "<string>",
        "signatures": [
          {
            "format": "<string>",
            "signature": "<string>",
            "signedBy": "<string>",
            "signingAlgorithmSpec": "<string>"
          }
        ]
      }
    ]
  },
  "deduplicationPeriod": {
    "DeduplicationDuration": {
      "value": {
        "seconds": 123,
        "nanos": 123,
        "unknownFields": {
          "fields": "<object>"
        }
      }
    }
  },
  "submissionId": "<string>",
  "userId": "<string>",
  "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
  "minLedgerTime": {
    "time": {
      "Empty": {}
    }
  }
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(request)
end
puts response.body
200
400
default
{
  "updateId": "<string>",
  "completionOffset": 123
}
<string>
{
  "code": "<string>",
  "cause": "<string>",
  "correlationId": "<string>",
  "traceId": "<string>",
  "context": {},
  "resources": [
    [
      "<string>"
    ]
  ],
  "errorCategory": 123,
  "grpcCodeValue": 123,
  "retryInfo": "<string>",
  "definiteAnswer": false
}

Authorizations

httpAuth

Authorization
string
required
HTTP bearer authentication. Send the token as Authorization: Bearer &lt;token&gt;. Ledger API standard JWT token

apiKeyAuth

Sec-WebSocket-Protocol
string
required
API key authentication in the header. Ledger API standard JWT token (websocket)

Body

application/json
preparedTransaction
string
required
the prepared transaction Typically this is the value of the prepared_transaction field in PrepareSubmissionResponse obtained from calling prepareSubmission. Required
partySignatures
object
required
OpenAPI type: PartySignatures.Additional signatures provided by the submitting parties

Show child attributes

signatures
object[]
required
OpenAPI type: SinglePartySignatures[].Additional signatures provided by all individual parties Required: must be non-empty

Show child attributes

party
string
required
Submitting party Required
signatures
object[]
required
OpenAPI type: Signature[].Signatures Required: must be non-empty

Show child attributes

format
string
required
Required
signature
string
required
Required: must be non-empty
signedBy
string
required
The fingerprint/id of the keypair used to create this signature and needed to verify. Required
signingAlgorithmSpec
string
required
The signing algorithm specification used to produce this signature Required
deduplicationPeriod
object
OpenAPI type: DeduplicationPeriod2.

Show child attributes

Variant 1
object

Show child attributes

DeduplicationDuration
object
required
OpenAPI type: DeduplicationDuration2.

Show child attributes

value
object
required
OpenAPI type: Duration.

Show child attributes

seconds
number
required
OpenAPI type: integer (int64).
nanos
number
required
OpenAPI type: integer (int32).
unknownFields
object
OpenAPI type: UnknownFieldSet.This field is automatically added as part of protobuf to json mapping

Show child attributes

fields
object
required
OpenAPI type: Map_Int_Field.
Variant 2
object

Show child attributes

DeduplicationOffset
object
required
OpenAPI type: DeduplicationOffset2.

Show child attributes

value
number
required
OpenAPI type: integer (int64).
Variant 3
object

Show child attributes

Empty
object
required
OpenAPI type: Empty10.
submissionId
string
required
A unique identifier to distinguish completions for different submissions with the same change ID. Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission with the same change ID. Must be a valid LedgerString (as described in value.proto). Required
userId
string
See [PrepareSubmissionRequest.user_id] Optional
hashingSchemeVersion
string
required
The hashing scheme version used when building the hash RequiredAllowed values: HASHING_SCHEME_VERSION_UNSPECIFIED, HASHING_SCHEME_VERSION_V2, HASHING_SCHEME_VERSION_V3.
minLedgerTime
object
OpenAPI type: MinLedgerTime.If set will influence the chosen ledger effective time but will not result in a submission delay so any override should be scheduled to executed within the window allowed by synchronizer. Optional

Show child attributes

time
object
OpenAPI type: Time.Required

Show child attributes

Variant 1
object

Show child attributes

Empty
object
required
OpenAPI type: Empty9.
Variant 2
object

Show child attributes

MinLedgerTimeAbs
object
required
OpenAPI type: MinLedgerTimeAbs.

Show child attributes

value
string
required
Variant 3
object

Show child attributes

MinLedgerTimeRel
object
required
OpenAPI type: MinLedgerTimeRel.

Show child attributes

value
object
required
OpenAPI type: Duration.

Show child attributes

seconds
number
required
OpenAPI type: integer (int64).
nanos
number
required
OpenAPI type: integer (int32).
unknownFields
object
OpenAPI type: UnknownFieldSet.This field is automatically added as part of protobuf to json mapping

Show child attributes

fields
object
required
OpenAPI type: Map_Int_Field.

Responses

200

application/json
updateId
string
required
The id of the transaction that resulted from the submitted command. Must be a valid LedgerString (as described in value.proto). Required
completionOffset
integer (int64)
required
The details of the offset field are described in community/ledger-api/README.md. Required

400

Invalid value, Invalid value for: body
text/plain
value
string
required

default

application/json
code
string
required
cause
string
required
correlationId
string
traceId
string
context
Map_String
required
resources
Tuple2_String_String[]
errorCategory
integer (int32)
required
grpcCodeValue
integer (int32)
retryInfo
string
definiteAnswer
boolean

History

Updated3.5

The POST /v2/interactive-submission/executeAndWait operation changed in this snapshot.