curl --request GET \
--url 'http://localhost:7575/v2/state/active-contracts-page' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}'
import json
import requests
url = "http://localhost:7575/v2/state/active-contracts-page"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}''')
response = requests.request(
"GET", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('http://localhost:7575/v2/state/active-contracts-page', {
method: 'GET',
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'http://localhost:7575/v2/state/active-contracts-page',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<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("GET", "http://localhost:7575/v2/state/active-contracts-page", bytes.NewBufferString(`{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<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/state/active-contracts-page"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("GET", HttpRequest.BodyPublishers.ofString("""
{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<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/state/active-contracts-page')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"activeContracts": [
{
"workflowId": "<string>",
"contractEntry": {
"JsActiveContract": {
"createdEvent": {
"offset": 123,
"nodeId": 123,
"contractId": "<string>",
"templateId": "<string>",
"contractKey": "<string>",
"contractKeyHash": "<string>",
"createArgument": "<string>",
"createdEventBlob": "<string>",
"interfaceViews": [
"<object>"
],
"witnessParties": [
"<string>"
],
"signatories": [
"<string>"
],
"observers": [
"<string>"
],
"createdAt": "<string>",
"packageName": "<string>",
"representativePackageId": "<string>",
"acsDelta": false
},
"synchronizerId": "<string>",
"reassignmentCounter": 123
}
},
"streamContinuationToken": "<string>"
}
],
"activeAtOffset": 123,
"nextPageToken": "<string>"
}
<string>
{
"code": "<string>",
"cause": "<string>",
"correlationId": "<string>",
"traceId": "<string>",
"context": {},
"resources": [
[
"<string>"
]
],
"errorCategory": 123,
"grpcCodeValue": 123,
"retryInfo": "<string>",
"definiteAnswer": false
}
GET /v2/state/active-contracts-page
Deprecated Use POST version of this endpoint
GET
/
v2
/
state
/
active-contracts-page
curl --request GET \
--url 'http://localhost:7575/v2/state/active-contracts-page' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}'
import json
import requests
url = "http://localhost:7575/v2/state/active-contracts-page"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}''')
response = requests.request(
"GET", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('http://localhost:7575/v2/state/active-contracts-page', {
method: 'GET',
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'http://localhost:7575/v2/state/active-contracts-page',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<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("GET", "http://localhost:7575/v2/state/active-contracts-page", bytes.NewBufferString(`{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<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/state/active-contracts-page"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("GET", HttpRequest.BodyPublishers.ofString("""
{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<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/state/active-contracts-page')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"activeContracts": [
{
"workflowId": "<string>",
"contractEntry": {
"JsActiveContract": {
"createdEvent": {
"offset": 123,
"nodeId": 123,
"contractId": "<string>",
"templateId": "<string>",
"contractKey": "<string>",
"contractKeyHash": "<string>",
"createArgument": "<string>",
"createdEventBlob": "<string>",
"interfaceViews": [
"<object>"
],
"witnessParties": [
"<string>"
],
"signatories": [
"<string>"
],
"observers": [
"<string>"
],
"createdAt": "<string>",
"packageName": "<string>",
"representativePackageId": "<string>",
"acsDelta": false
},
"synchronizerId": "<string>",
"reassignmentCounter": 123
}
},
"streamContinuationToken": "<string>"
}
],
"activeAtOffset": 123,
"nextPageToken": "<string>"
}
<string>
{
"code": "<string>",
"cause": "<string>",
"correlationId": "<string>",
"traceId": "<string>",
"context": {},
"resources": [
[
"<string>"
]
],
"errorCategory": 123,
"grpcCodeValue": 123,
"retryInfo": "<string>",
"definiteAnswer": false
}
Deprecated Use POST version of this endpoint
curl --request GET \
--url 'http://localhost:7575/v2/state/active-contracts-page' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}'
import json
import requests
url = "http://localhost:7575/v2/state/active-contracts-page"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}''')
response = requests.request(
"GET", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('http://localhost:7575/v2/state/active-contracts-page', {
method: 'GET',
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'http://localhost:7575/v2/state/active-contracts-page',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<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("GET", "http://localhost:7575/v2/state/active-contracts-page", bytes.NewBufferString(`{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<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/state/active-contracts-page"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("GET", HttpRequest.BodyPublishers.ofString("""
{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<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/state/active-contracts-page')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"activeAtOffset": 123,
"eventFormat": {
"filtersByParty": {},
"filtersForAnyParty": {
"cumulative": [
{
"identifierFilter": {
"Empty": "<object>"
}
}
]
},
"verbose": false
},
"maxPageSize": 123,
"pageToken": "<string>"
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"activeContracts": [
{
"workflowId": "<string>",
"contractEntry": {
"JsActiveContract": {
"createdEvent": {
"offset": 123,
"nodeId": 123,
"contractId": "<string>",
"templateId": "<string>",
"contractKey": "<string>",
"contractKeyHash": "<string>",
"createArgument": "<string>",
"createdEventBlob": "<string>",
"interfaceViews": [
"<object>"
],
"witnessParties": [
"<string>"
],
"signatories": [
"<string>"
],
"observers": [
"<string>"
],
"createdAt": "<string>",
"packageName": "<string>",
"representativePackageId": "<string>",
"acsDelta": false
},
"synchronizerId": "<string>",
"reassignmentCounter": 123
}
},
"streamContinuationToken": "<string>"
}
],
"activeAtOffset": 123,
"nextPageToken": "<string>"
}
<string>
{
"code": "<string>",
"cause": "<string>",
"correlationId": "<string>",
"traceId": "<string>",
"context": {},
"resources": [
[
"<string>"
]
],
"errorCategory": 123,
"grpcCodeValue": 123,
"retryInfo": "<string>",
"definiteAnswer": false
}
Authorizations
httpAuth
HTTP bearer authentication. Send the token as
Authorization: Bearer <token>. Ledger API standard JWT tokenapiKeyAuth
Body
application/json
OpenAPI type:
integer (int64).The offset at which the snapshot of the active contracts will be computed. Must be no greater than the current ledger end offset. Must be greater than or equal to the last pruning offset. Optional, if defined, it must be a valid absolute offset (positive integer) or ledger begin offset (zero). If zero, the empty set will be returned. If not defined, the current ledger end will be used and it will be populated in the response. OptionalOpenAPI type:
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
OpenAPI type:
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 emptyOpenAPI type:
Filters.The union of a set of template filters, interface filters, or a wildcard.Show child attributes
Show child attributes
OpenAPI type:
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
OpenAPI type:
IdentifierFilter.RequiredShow child attributes
Show child attributes
Show child attributes
Show child attributes
OpenAPI type:
InterfaceFilter.This filter matches contracts that implement a specific interface.Show child attributes
Show child attributes
OpenAPI type:
InterfaceFilter1.This filter matches contracts that implement a specific interface.Show child attributes
Show child attributes
The interface that a matching contract must implement. The
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. RequiredWhether to include the interface view on the contract in the returned
CreatedEvent. Use this to access contract data in a uniform manner in your API client. OptionalShow child attributes
Show child attributes
OpenAPI type:
TemplateFilter.This filter matches contracts of a specific template.Show child attributes
Show child attributes
OpenAPI type:
TemplateFilter1.This filter matches contracts of a specific template.Show child attributes
Show child attributes
A template for which the payload should be included in the response. The
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. RequiredShow child attributes
Show child attributes
OpenAPI type:
WildcardFilter.This filter matches all templates.Show child attributes
Show child attributes
OpenAPI type:
WildcardFilter1.This filter matches all templates.OpenAPI type:
integer (int32).The result page will contain at most max_page_size entries of the respective active contract snapshot. The server might reject max_page_size breaching the server-specified limit. Optional, if not defined, the default will be determined by the server. OptionalTo get the next page of the active contracts snapshot, the
page_token should be set to the next_page_token of the last GetActiveContractsPageResponse. The page token only works if subsequent requests: - are executed on the same participant, - use the same active_at_offset and event_format, - and the participant’s store was not pruned to after the active_at_offset. If not specified, the first page of the active contracts snapshot will be returned. Optional: can be emptyResponses
200
application/json
The collection of active contracts for this page response. Required: must be non-empty
Show child attributes
Show child attributes
The workflow ID used in command submission which corresponds to the contract_entry. Only set if the
workflow_id for the command was set. Must be a valid LedgerString (as described in value.proto). OptionalFor a contract there could be multiple contract_entry-s in the entire snapshot. These together define the state of one contract in the snapshot. A contract_entry is included in the result, if and only if there is at least one stakeholder party of the contract that is hosted on the synchronizer at the time of the event and the party satisfies the
TransactionFilter in the query. RequiredShow child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Records that a contract has been created, and choices may now be exercised on it.
Show child attributes
Show child attributes
The offset of origin, which has contextual meaning, please see description at messages that include a CreatedEvent. Offsets are managed by the participant nodes. Transactions can thus NOT be assumed to have the same offsets on different participant nodes. It is a valid absolute offset (positive integer) Required
The position of this event in the originating transaction or reassignment. The origin has contextual meaning, please see description at messages that include a CreatedEvent. Node IDs are not necessarily equal across participants, as these may see different projections/parts of transactions. Must be valid node ID (non-negative integer) Required
The ID of the created contract. Must be a valid LedgerString (as described in
value.proto). RequiredThe template of the created contract. The identifier uses the package-id reference format. Required
The key of the created contract. This will be set if and only if
template_id defines a contract key. OptionalThe hash of contract_key. This will be set if and only if
template_id defines a contract key. Optional: can be emptyOpaque representation of contract create event payload intended for forwarding to an API server as a contract disclosed as part of a command submission. Optional: can be empty
Interface views specified in the transaction filter. Includes an
InterfaceView 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
The interface implemented by the matched event. The identifier uses the package-id reference format. Required
Whether the view was successfully computed, and if not, the reason for the error. The error is reported using the same rules for error codes and messages as the errors returned for API requests. Required
The value of the interface’s view method on this event. Set if it was requested in the
InterfaceFilter and it could be successfully computed. OptionalThe package defining the interface implementation used to compute the view. Can be different from the package that was used to create the contract itself, as the contract arguments can be upgraded or downgraded using smart-contract upgrading as part of computing the interface view. Populated if the view computation is successful, otherwise empty. Optional
The parties that are notified of this event. When a
CreatedEvent 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-emptyThe signatories for this contract as specified by the template. Required: must be non-empty
The observers for this contract as specified explicitly by the template or implicitly as choice controllers. This field never contains parties that are signatories. Optional: can be empty
A package-id present in the participant package store that typechecks the contract’s argument. This may differ from the package-id of the template used to create the contract. For contracts created before Canton 3.4, this field matches the contract’s creation package-id. NOTE: Experimental, server internal concept, not for client consumption. Subject to change without notice. Required
Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter equals zero. This field will be the reassignment_counter of the latest observable activation event on this synchronizer, which is before the active_at_offset. Required
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Records that a contract has been assigned, and it can be used on the target synchronizer.
Show child attributes
Show child attributes
The ID from the unassigned event. For correlation capabilities. Must be a valid LedgerString (as described in
value.proto). RequiredParty on whose behalf the assign command was executed. Empty if the assignment happened offline via the repair service. Must be a valid PartyIdString (as described in
value.proto). OptionalEach corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter equals zero. Required
Records that a contract has been created, and choices may now be exercised on it.
Show child attributes
Show child attributes
The offset of origin, which has contextual meaning, please see description at messages that include a CreatedEvent. Offsets are managed by the participant nodes. Transactions can thus NOT be assumed to have the same offsets on different participant nodes. It is a valid absolute offset (positive integer) Required
The position of this event in the originating transaction or reassignment. The origin has contextual meaning, please see description at messages that include a CreatedEvent. Node IDs are not necessarily equal across participants, as these may see different projections/parts of transactions. Must be valid node ID (non-negative integer) Required
The ID of the created contract. Must be a valid LedgerString (as described in
value.proto). RequiredThe template of the created contract. The identifier uses the package-id reference format. Required
The key of the created contract. This will be set if and only if
template_id defines a contract key. OptionalThe hash of contract_key. This will be set if and only if
template_id defines a contract key. Optional: can be emptyOpaque representation of contract create event payload intended for forwarding to an API server as a contract disclosed as part of a command submission. Optional: can be empty
Interface views specified in the transaction filter. Includes an
InterfaceView 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
The interface implemented by the matched event. The identifier uses the package-id reference format. Required
Whether the view was successfully computed, and if not, the reason for the error. The error is reported using the same rules for error codes and messages as the errors returned for API requests. Required
The value of the interface’s view method on this event. Set if it was requested in the
InterfaceFilter and it could be successfully computed. OptionalThe package defining the interface implementation used to compute the view. Can be different from the package that was used to create the contract itself, as the contract arguments can be upgraded or downgraded using smart-contract upgrading as part of computing the interface view. Populated if the view computation is successful, otherwise empty. Optional
The parties that are notified of this event. When a
CreatedEvent 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-emptyThe signatories for this contract as specified by the template. Required: must be non-empty
The observers for this contract as specified explicitly by the template or implicitly as choice controllers. This field never contains parties that are signatories. Optional: can be empty
A package-id present in the participant package store that typechecks the contract’s argument. This may differ from the package-id of the template used to create the contract. For contracts created before Canton 3.4, this field matches the contract’s creation package-id. NOTE: Experimental, server internal concept, not for client consumption. Subject to change without notice. Required
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Records that a contract has been created, and choices may now be exercised on it.
Show child attributes
Show child attributes
The offset of origin, which has contextual meaning, please see description at messages that include a CreatedEvent. Offsets are managed by the participant nodes. Transactions can thus NOT be assumed to have the same offsets on different participant nodes. It is a valid absolute offset (positive integer) Required
The position of this event in the originating transaction or reassignment. The origin has contextual meaning, please see description at messages that include a CreatedEvent. Node IDs are not necessarily equal across participants, as these may see different projections/parts of transactions. Must be valid node ID (non-negative integer) Required
The ID of the created contract. Must be a valid LedgerString (as described in
value.proto). RequiredThe template of the created contract. The identifier uses the package-id reference format. Required
The key of the created contract. This will be set if and only if
template_id defines a contract key. OptionalThe hash of contract_key. This will be set if and only if
template_id defines a contract key. Optional: can be emptyOpaque representation of contract create event payload intended for forwarding to an API server as a contract disclosed as part of a command submission. Optional: can be empty
Interface views specified in the transaction filter. Includes an
InterfaceView 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
The interface implemented by the matched event. The identifier uses the package-id reference format. Required
Whether the view was successfully computed, and if not, the reason for the error. The error is reported using the same rules for error codes and messages as the errors returned for API requests. Required
The value of the interface’s view method on this event. Set if it was requested in the
InterfaceFilter and it could be successfully computed. OptionalThe package defining the interface implementation used to compute the view. Can be different from the package that was used to create the contract itself, as the contract arguments can be upgraded or downgraded using smart-contract upgrading as part of computing the interface view. Populated if the view computation is successful, otherwise empty. Optional
The parties that are notified of this event. When a
CreatedEvent 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-emptyThe signatories for this contract as specified by the template. Required: must be non-empty
The observers for this contract as specified explicitly by the template or implicitly as choice controllers. This field never contains parties that are signatories. Optional: can be empty
A package-id present in the participant package store that typechecks the contract’s argument. This may differ from the package-id of the template used to create the contract. For contracts created before Canton 3.4, this field matches the contract’s creation package-id. NOTE: Experimental, server internal concept, not for client consumption. Subject to change without notice. Required
Records that a contract has been unassigned, and it becomes unusable on the source synchronizer
Show child attributes
Show child attributes
The ID of the unassignment. This needs to be used as an input for a assign ReassignmentCommand. Must be a valid LedgerString (as described in
value.proto). RequiredThe ID of the reassigned contract. Must be a valid LedgerString (as described in
value.proto). RequiredThe template of the reassigned contract. The identifier uses the package-id reference format. Required
Party on whose behalf the unassign command was executed. Empty if the unassignment happened offline via the repair service. Must be a valid PartyIdString (as described in
value.proto). OptionalEach corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter equals zero. Required
Assignment exclusivity Before this time (measured on the target synchronizer), only the submitter of the unassignment can initiate the assignment Defined for reassigning participants. Optional
The offset of origin. Offsets are managed by the participant nodes. Reassignments can thus NOT be assumed to have the same offsets on different participant nodes. Must be a valid absolute offset (positive integer) Required
The active_at_offset which was specified in the request, or the calculated active_at_offset from the actual ledger end from at the evaluation of the request. Required
If not present this is the last page. If present, this token must be used to get the next page. Optional: can be empty
400
Invalid value, Invalid value for: bodytext/plain
default
application/json
History
Deprecated
3.5Added
3.5