curl -s \
"https://engine.example.com/v1/system" \
-H "Authorization: Bearer $TOKEN"// A client from OpenAPI Generator: see Build a client.
import {
Configuration,
ProblemFromJSON,
ResponseError,
SystemApi,
} from "./nodeasset-client";
const api = new SystemApi(new Configuration({
basePath: "https://engine.example.com",
accessToken: process.env.TOKEN,
}));
try {
const answer = await api.getSystemStatus();
console.log(answer.value);
} catch (e) {
if (!(e instanceof ResponseError)) throw e;
// A refusal is a problem; its type ends in the slug.
const problem = ProblemFromJSON(await e.response.json());
const slug = problem.type.split(":").pop();
console.error(e.response.status, slug, problem.detail);
}
# A client from OpenAPI Generator: see Build a client.
import os
import sys
import nodeasset_client
config = nodeasset_client.Configuration(
host="https://engine.example.com",
access_token=os.environ["TOKEN"],
)
with nodeasset_client.ApiClient(config) as client:
api = nodeasset_client.SystemApi(client)
try:
answer = api.get_system_status()
print(answer.value)
except nodeasset_client.ApiException as e:
# A refusal is a problem; its type ends in the slug.
problem = nodeasset_client.Problem.from_json(e.body)
slug = problem.type.rsplit(":", 1)[-1]
print(e.status, slug, problem.detail, file=sys.stderr)
// A client from OpenAPI Generator: see Build a client.
import nodeasset.client.ApiClient;
import nodeasset.client.ApiException;
import nodeasset.client.api.SystemApi;
import nodeasset.client.model.Problem;
public class GetSystemStatus {
public static void main(String[] args) throws Exception {
ApiClient client = new ApiClient();
client.updateBaseUri("https://engine.example.com");
client.setRequestInterceptor(builder ->
builder.header("Authorization", "Bearer " + System.getenv("TOKEN")));
SystemApi api = new SystemApi(client);
try {
var request = SystemApi.APIGetSystemStatusRequest.newBuilder().build();
var answer = api.getSystemStatus(request);
System.out.println(answer.getValue());
} catch (ApiException e) {
// A refusal is a problem; its type ends in the slug.
Problem problem = client.getObjectMapper()
.readValue(e.getResponseBody(), Problem.class);
String type = problem.getType();
String slug = type.substring(type.lastIndexOf(':') + 1);
System.err.println(e.getCode() + " " + slug + " " + problem.getDetail());
}
}
}
{
"offset": 671,
"now": "2026-10-03T13:26:06.415565610Z",
"value": {
"profiles": [
"sandbox"
],
"security": {
"jwtMode": "shared-secret"
},
"ledger": {
"manager": "venue::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"registrar": "issuer::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"operator": "operator::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"ledgerEnd": 671,
"participantId": "sandbox::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"apiVersion": "3.5.6",
"synchronizers": [
{
"alias": "synchronizer-1",
"id": "synchronizer-1::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"permission": "submission"
}
]
},
"manifest": {
"version": 1,
"instruments": 1
},
"settlements": {
"open": 0,
"watchInterval": "PT2S"
},
"reconciliation": {
"enabled": false,
"blocking": true,
"cadence": "PT1H",
"lastReconciliationRunId": "recon-438-1791033544405",
"lastAt": "2026-10-03T13:19:04.405727251Z"
},
"projection": {
"pinOffset": 669,
"oldestOffset": 48,
"oldestAt": "2026-10-03T13:20:02.183207Z",
"latestOffset": 669,
"ledgerEnd": 671,
"lag": 2,
"lagNote": "the gap at this pin, not a verdict: the ledger end counts every offset on the participant, and PQS advances only when it persists a transaction, so the gap grows while the party is quiet as well as while PQS is stuck; a run never waits for it"
},
"retention": {
"reconciliationRuns": null,
"events": "2026-07-05T13:26:06.118Z",
"operations": null,
"approvals": null
},
"webhooks": {
"delivery": {
"enabled": false,
"interval": "PT5S",
"maxAttempts": 8,
"backoff": "PT10S",
"timeout": "PT10S"
},
"types": [
"approval.approved",
"approval.rejected",
"approval.requested"
],
"hooks": []
},
"build": {
"version": "0.1.0-SNAPSHOT",
"commit": "2743f55169e508c8b2dffc97ff841a72b632b300",
"startedAt": "2026-10-03T13:22:17.710Z"
},
"packages": [
{
"name": "nodeasset",
"version": "1.0.0",
"compiledId": "6ef8f28015a9001e0d7896b7f4edaa20c6967c5b51dd7c29cadde6a84cc86b52",
"recordedId": "6ef8f28015a9001e0d7896b7f4edaa20c6967c5b51dd7c29cadde6a84cc86b52",
"required": true,
"onVenueNode": true
},
{
"name": "nodeasset-reserve",
"version": "1.0.0",
"compiledId": "5fc163f0473cb41e936d4ac532273b2655be90a0f8325cef751b884713287b16",
"recordedId": "5fc163f0473cb41e936d4ac532273b2655be90a0f8325cef751b884713287b16",
"required": false,
"onVenueNode": false
}
],
"vetting": [
{
"participantId": "sandbox::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"synchronizerId": "synchronizer-1::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"packages": [
{
"packageId": "6ef8f28015a9001e0d7896b7f4edaa20c6967c5b51dd7c29cadde6a84cc86b52",
"name": "nodeasset",
"version": "1.0.0",
"validFrom": null,
"validUntil": null
}
]
}
]
}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"requestId": "<string>",
"gate": "<string>",
"check": "<string>",
"recovery": "<string>",
"retryAfter": 123,
"retryable": true,
"packageName": "<string>",
"party": "<string>",
"contractId": "<string>",
"projectionOffset": 123,
"ledgerEnd": 123,
"code": 123,
"reason": "<string>",
"policyVersion": 123,
"errors": [
{
"pointer": "<string>",
"detail": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"requestId": "<string>",
"gate": "<string>",
"check": "<string>",
"recovery": "<string>",
"retryAfter": 123,
"retryable": true,
"packageName": "<string>",
"party": "<string>",
"contractId": "<string>",
"projectionOffset": 123,
"ledgerEnd": 123,
"code": 123,
"reason": "<string>",
"policyVersion": 123,
"errors": [
{
"pointer": "<string>",
"detail": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"requestId": "<string>",
"gate": "<string>",
"check": "<string>",
"recovery": "<string>",
"retryAfter": 123,
"retryable": true,
"packageName": "<string>",
"party": "<string>",
"contractId": "<string>",
"projectionOffset": 123,
"ledgerEnd": 123,
"code": 123,
"reason": "<string>",
"policyVersion": 123,
"errors": [
{
"pointer": "<string>",
"detail": "<string>"
}
]
}Get the system status
Returns the engine’s state: its build, ledger, packages, settlements, reconciliation, projection and webhooks. It names offsets and counts, and nothing of any holder.
curl -s \
"https://engine.example.com/v1/system" \
-H "Authorization: Bearer $TOKEN"// A client from OpenAPI Generator: see Build a client.
import {
Configuration,
ProblemFromJSON,
ResponseError,
SystemApi,
} from "./nodeasset-client";
const api = new SystemApi(new Configuration({
basePath: "https://engine.example.com",
accessToken: process.env.TOKEN,
}));
try {
const answer = await api.getSystemStatus();
console.log(answer.value);
} catch (e) {
if (!(e instanceof ResponseError)) throw e;
// A refusal is a problem; its type ends in the slug.
const problem = ProblemFromJSON(await e.response.json());
const slug = problem.type.split(":").pop();
console.error(e.response.status, slug, problem.detail);
}
# A client from OpenAPI Generator: see Build a client.
import os
import sys
import nodeasset_client
config = nodeasset_client.Configuration(
host="https://engine.example.com",
access_token=os.environ["TOKEN"],
)
with nodeasset_client.ApiClient(config) as client:
api = nodeasset_client.SystemApi(client)
try:
answer = api.get_system_status()
print(answer.value)
except nodeasset_client.ApiException as e:
# A refusal is a problem; its type ends in the slug.
problem = nodeasset_client.Problem.from_json(e.body)
slug = problem.type.rsplit(":", 1)[-1]
print(e.status, slug, problem.detail, file=sys.stderr)
// A client from OpenAPI Generator: see Build a client.
import nodeasset.client.ApiClient;
import nodeasset.client.ApiException;
import nodeasset.client.api.SystemApi;
import nodeasset.client.model.Problem;
public class GetSystemStatus {
public static void main(String[] args) throws Exception {
ApiClient client = new ApiClient();
client.updateBaseUri("https://engine.example.com");
client.setRequestInterceptor(builder ->
builder.header("Authorization", "Bearer " + System.getenv("TOKEN")));
SystemApi api = new SystemApi(client);
try {
var request = SystemApi.APIGetSystemStatusRequest.newBuilder().build();
var answer = api.getSystemStatus(request);
System.out.println(answer.getValue());
} catch (ApiException e) {
// A refusal is a problem; its type ends in the slug.
Problem problem = client.getObjectMapper()
.readValue(e.getResponseBody(), Problem.class);
String type = problem.getType();
String slug = type.substring(type.lastIndexOf(':') + 1);
System.err.println(e.getCode() + " " + slug + " " + problem.getDetail());
}
}
}
{
"offset": 671,
"now": "2026-10-03T13:26:06.415565610Z",
"value": {
"profiles": [
"sandbox"
],
"security": {
"jwtMode": "shared-secret"
},
"ledger": {
"manager": "venue::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"registrar": "issuer::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"operator": "operator::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"ledgerEnd": 671,
"participantId": "sandbox::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"apiVersion": "3.5.6",
"synchronizers": [
{
"alias": "synchronizer-1",
"id": "synchronizer-1::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"permission": "submission"
}
]
},
"manifest": {
"version": 1,
"instruments": 1
},
"settlements": {
"open": 0,
"watchInterval": "PT2S"
},
"reconciliation": {
"enabled": false,
"blocking": true,
"cadence": "PT1H",
"lastReconciliationRunId": "recon-438-1791033544405",
"lastAt": "2026-10-03T13:19:04.405727251Z"
},
"projection": {
"pinOffset": 669,
"oldestOffset": 48,
"oldestAt": "2026-10-03T13:20:02.183207Z",
"latestOffset": 669,
"ledgerEnd": 671,
"lag": 2,
"lagNote": "the gap at this pin, not a verdict: the ledger end counts every offset on the participant, and PQS advances only when it persists a transaction, so the gap grows while the party is quiet as well as while PQS is stuck; a run never waits for it"
},
"retention": {
"reconciliationRuns": null,
"events": "2026-07-05T13:26:06.118Z",
"operations": null,
"approvals": null
},
"webhooks": {
"delivery": {
"enabled": false,
"interval": "PT5S",
"maxAttempts": 8,
"backoff": "PT10S",
"timeout": "PT10S"
},
"types": [
"approval.approved",
"approval.rejected",
"approval.requested"
],
"hooks": []
},
"build": {
"version": "0.1.0-SNAPSHOT",
"commit": "2743f55169e508c8b2dffc97ff841a72b632b300",
"startedAt": "2026-10-03T13:22:17.710Z"
},
"packages": [
{
"name": "nodeasset",
"version": "1.0.0",
"compiledId": "6ef8f28015a9001e0d7896b7f4edaa20c6967c5b51dd7c29cadde6a84cc86b52",
"recordedId": "6ef8f28015a9001e0d7896b7f4edaa20c6967c5b51dd7c29cadde6a84cc86b52",
"required": true,
"onVenueNode": true
},
{
"name": "nodeasset-reserve",
"version": "1.0.0",
"compiledId": "5fc163f0473cb41e936d4ac532273b2655be90a0f8325cef751b884713287b16",
"recordedId": "5fc163f0473cb41e936d4ac532273b2655be90a0f8325cef751b884713287b16",
"required": false,
"onVenueNode": false
}
],
"vetting": [
{
"participantId": "sandbox::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"synchronizerId": "synchronizer-1::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"packages": [
{
"packageId": "6ef8f28015a9001e0d7896b7f4edaa20c6967c5b51dd7c29cadde6a84cc86b52",
"name": "nodeasset",
"version": "1.0.0",
"validFrom": null,
"validUntil": null
}
]
}
]
}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"requestId": "<string>",
"gate": "<string>",
"check": "<string>",
"recovery": "<string>",
"retryAfter": 123,
"retryable": true,
"packageName": "<string>",
"party": "<string>",
"contractId": "<string>",
"projectionOffset": 123,
"ledgerEnd": 123,
"code": 123,
"reason": "<string>",
"policyVersion": 123,
"errors": [
{
"pointer": "<string>",
"detail": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"requestId": "<string>",
"gate": "<string>",
"check": "<string>",
"recovery": "<string>",
"retryAfter": 123,
"retryable": true,
"packageName": "<string>",
"party": "<string>",
"contractId": "<string>",
"projectionOffset": 123,
"ledgerEnd": 123,
"code": 123,
"reason": "<string>",
"policyVersion": 123,
"errors": [
{
"pointer": "<string>",
"detail": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"requestId": "<string>",
"gate": "<string>",
"check": "<string>",
"recovery": "<string>",
"retryAfter": 123,
"retryable": true,
"packageName": "<string>",
"party": "<string>",
"contractId": "<string>",
"projectionOffset": 123,
"ledgerEnd": 123,
"code": 123,
"reason": "<string>",
"policyVersion": 123,
"errors": [
{
"pointer": "<string>",
"detail": "<string>"
}
]
}auditor, monitor, operator, risk.Authorizations
A JWT from the deployment's identity provider, whose roles claim names the caller's roles and whose holder claim names an investor's holder.
Headers
A signed request's key id, as venue.api.signing.clients configures it for the bearer's subject.
Seconds since the epoch, within venue.api.signing.window of the engine's clock, 5 minutes by default.
^[0-9]+$At least 16 random bytes in base64url, never reused within twice the window.
22 - 128^[A-Za-z0-9_-]+={0,2}$The base64 HMAC-SHA256, under the key's secret, of the method, the path and query, the timestamp, the nonce and the body's SHA-256.
Your id for this request, 1 to 128 printable characters, repeated in the answer; absent, the engine makes one.
128^[\x21-\x7E]+$A W3C trace context, which the engine joins and passes on.
^[0-9a-f]{2}-[0-9a-f]{32}-[0-9a-f]{16}-[0-9a-f]{2}$Response
The engine's state.
The ledger offset the answer was read at; 0 for an answer from the engine's own records.
The engine's clock when it answered, an ISO-8601 instant.
What the read answers; for a list, the page's records in the list's order.
Show child attributes
Show child attributes

