curl -s \
"https://engine.example.com/v1/distributions/d-27c46953-a001" \
-H "Authorization: Bearer $TOKEN"// A client from OpenAPI Generator: see Build a client.
import {
Configuration,
DistributionsApi,
ProblemFromJSON,
ResponseError,
} from "./nodeasset-client";
const api = new DistributionsApi(new Configuration({
basePath: "https://engine.example.com",
accessToken: process.env.TOKEN,
}));
try {
const answer = await api.getDistribution({ distributionId: "d-27c46953-a001" });
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.DistributionsApi(client)
try:
answer = api.get_distribution(distribution_id="d-27c46953-a001")
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.DistributionsApi;
import nodeasset.client.model.Problem;
public class GetDistribution {
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")));
DistributionsApi api = new DistributionsApi(client);
try {
var request = DistributionsApi.APIGetDistributionRequest.newBuilder()
.distributionId("d-27c46953-a001")
.build();
var answer = api.getDistribution(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": 0,
"now": "2026-10-03T13:23:25.010209256Z",
"value": {
"distributionId": "d-27c46953-a001",
"instrumentId": "FUND",
"period": "2026-10",
"state": "paid",
"plan": {
"nav": 1.004003,
"basis": {
"nav": 1.004003,
"asOf": "2026-10-03T13:18:18.284Z",
"pointContractId": "00ee4dba2a9e8785f8a53eb0e3ff6ce28c4f459f14ee4b11684e563e5910ba5b13ca121220a74431eb9c6959e8038ccc1a3af9df0ea3706f1541db9184b50d62c50f5c98a3",
"withholdingRate": 0.154
},
"period": "2026-10",
"navAsOf": "2026-10-03T13:18:18.284Z",
"payouts": [
{
"basis": {
"nav": 1.004003,
"asOf": "2026-10-03T13:18:18.284Z",
"pointContractId": "00ee4dba2a9e8785f8a53eb0e3ff6ce28c4f459f14ee4b11684e563e5910ba5b13ca121220a74431eb9c6959e8038ccc1a3af9df0ea3706f1541db9184b50d62c50f5c98a3",
"withholdingRate": 0.154
},
"account": {
"id": "",
"owner": "alpha::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"provider": null
},
"amounts": {
"net": 16.92,
"gross": 20,
"payout": 16.92,
"carried": 0,
"charged": 20,
"withheld": 3.08,
"provisionDelta": 3.08
},
"parties": [
"alpha::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73"
],
"units": 5000,
"accruesFrom": {
"asOf": "2026-09-30T13:12:40.118Z",
"nav": 1
}
}
],
"excluded": [],
"pinOffset": 294,
"totalGross": 636585.3,
"totalPayout": 538551.15,
"instrument": {
"id": "FUND",
"admin": "issuer::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73"
},
"ratesInPeriod": [
{
"asOf": "2026-10-03T13:11:24.316404Z",
"withholdingRate": 0.154
}
],
"totalWithheld": 98034.1362,
"payoutDecimals": 2,
"withholdingRate": 0.154,
"standingApprovalId": "sa-eaa1e1f9-53aa",
"rateChangedInPeriod": false,
"acknowledgedRateChange": false
},
"createdAt": "2026-10-03T13:18:21.027099Z",
"updatedAt": "2026-10-03T13:18:25.990993Z",
"rolls": [
{
"detail": "charged 20.0000000000 at 2026-10-03T13:18:18.284Z",
"offset": 327,
"payout": 16.92,
"rowCid": "0003102b3230526bc5872f41055f7729f230420170a8e1f42c537f262d7ceecdd5ca121220d4d223aa6b585241a362e24ae448d771af5950714b665df7f7da0e3651de9b5a",
"state": "rolled",
"account": {
"id": "",
"owner": "alpha::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"provider": null
},
"charged": 20,
"withheld": 3.08,
"commandId": "roll:d-27c46953-a001:alpha::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73:"
}
],
"rolledAt": "2026-10-03T13:18:25.990993Z",
"currency": "USD",
"recordDate": "2026-10-31",
"paymentDate": "2026-11-02",
"entitledAt": "2026-10-03T13:18:19.902114Z",
"lines": [
{
"account": {
"id": "",
"owner": "alpha::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"provider": null
},
"holderId": "alpha",
"units": 5000,
"accruesFrom": {
"asOf": "2026-09-30T13:12:40.118Z",
"nav": 1
},
"gross": 20,
"withheld": 3.08,
"net": 16.92,
"payout": 16.92,
"carried": 0,
"state": "rolled",
"paidAt": "2026-10-03T13:18:24.611204Z",
"paidUpdateId": "1220c4a19e8f7d6b5a4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c"
}
]
}
}{
"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>"
}
]
}{
"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 a distribution
Returns one distribution, with its frozen plan and its rolls.
curl -s \
"https://engine.example.com/v1/distributions/d-27c46953-a001" \
-H "Authorization: Bearer $TOKEN"// A client from OpenAPI Generator: see Build a client.
import {
Configuration,
DistributionsApi,
ProblemFromJSON,
ResponseError,
} from "./nodeasset-client";
const api = new DistributionsApi(new Configuration({
basePath: "https://engine.example.com",
accessToken: process.env.TOKEN,
}));
try {
const answer = await api.getDistribution({ distributionId: "d-27c46953-a001" });
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.DistributionsApi(client)
try:
answer = api.get_distribution(distribution_id="d-27c46953-a001")
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.DistributionsApi;
import nodeasset.client.model.Problem;
public class GetDistribution {
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")));
DistributionsApi api = new DistributionsApi(client);
try {
var request = DistributionsApi.APIGetDistributionRequest.newBuilder()
.distributionId("d-27c46953-a001")
.build();
var answer = api.getDistribution(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": 0,
"now": "2026-10-03T13:23:25.010209256Z",
"value": {
"distributionId": "d-27c46953-a001",
"instrumentId": "FUND",
"period": "2026-10",
"state": "paid",
"plan": {
"nav": 1.004003,
"basis": {
"nav": 1.004003,
"asOf": "2026-10-03T13:18:18.284Z",
"pointContractId": "00ee4dba2a9e8785f8a53eb0e3ff6ce28c4f459f14ee4b11684e563e5910ba5b13ca121220a74431eb9c6959e8038ccc1a3af9df0ea3706f1541db9184b50d62c50f5c98a3",
"withholdingRate": 0.154
},
"period": "2026-10",
"navAsOf": "2026-10-03T13:18:18.284Z",
"payouts": [
{
"basis": {
"nav": 1.004003,
"asOf": "2026-10-03T13:18:18.284Z",
"pointContractId": "00ee4dba2a9e8785f8a53eb0e3ff6ce28c4f459f14ee4b11684e563e5910ba5b13ca121220a74431eb9c6959e8038ccc1a3af9df0ea3706f1541db9184b50d62c50f5c98a3",
"withholdingRate": 0.154
},
"account": {
"id": "",
"owner": "alpha::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"provider": null
},
"amounts": {
"net": 16.92,
"gross": 20,
"payout": 16.92,
"carried": 0,
"charged": 20,
"withheld": 3.08,
"provisionDelta": 3.08
},
"parties": [
"alpha::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73"
],
"units": 5000,
"accruesFrom": {
"asOf": "2026-09-30T13:12:40.118Z",
"nav": 1
}
}
],
"excluded": [],
"pinOffset": 294,
"totalGross": 636585.3,
"totalPayout": 538551.15,
"instrument": {
"id": "FUND",
"admin": "issuer::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73"
},
"ratesInPeriod": [
{
"asOf": "2026-10-03T13:11:24.316404Z",
"withholdingRate": 0.154
}
],
"totalWithheld": 98034.1362,
"payoutDecimals": 2,
"withholdingRate": 0.154,
"standingApprovalId": "sa-eaa1e1f9-53aa",
"rateChangedInPeriod": false,
"acknowledgedRateChange": false
},
"createdAt": "2026-10-03T13:18:21.027099Z",
"updatedAt": "2026-10-03T13:18:25.990993Z",
"rolls": [
{
"detail": "charged 20.0000000000 at 2026-10-03T13:18:18.284Z",
"offset": 327,
"payout": 16.92,
"rowCid": "0003102b3230526bc5872f41055f7729f230420170a8e1f42c537f262d7ceecdd5ca121220d4d223aa6b585241a362e24ae448d771af5950714b665df7f7da0e3651de9b5a",
"state": "rolled",
"account": {
"id": "",
"owner": "alpha::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"provider": null
},
"charged": 20,
"withheld": 3.08,
"commandId": "roll:d-27c46953-a001:alpha::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73:"
}
],
"rolledAt": "2026-10-03T13:18:25.990993Z",
"currency": "USD",
"recordDate": "2026-10-31",
"paymentDate": "2026-11-02",
"entitledAt": "2026-10-03T13:18:19.902114Z",
"lines": [
{
"account": {
"id": "",
"owner": "alpha::12207ae69b2ef2f1249abd41923a06ee30bffa9298a17b0a875355c441bf32045d73",
"provider": null
},
"holderId": "alpha",
"units": 5000,
"accruesFrom": {
"asOf": "2026-09-30T13:12:40.118Z",
"nav": 1
},
"gross": 20,
"withheld": 3.08,
"net": 16.92,
"payout": 16.92,
"carried": 0,
"state": "rolled",
"paidAt": "2026-10-03T13:18:24.611204Z",
"paidUpdateId": "1220c4a19e8f7d6b5a4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c"
}
]
}
}{
"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>"
}
]
}{
"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>"
}
]
}app, approver, auditor, operator, registrar, 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}$Path Parameters
The distribution's id.
Response
The distribution.
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

