Add report proof
Appends a signed proof to the report record. The proof must be signed against the record's current hash — see About Proofs for how signing and validation work.
Proofs drive the report through its status lifecycle:
created → pending → completed → settled. Reports can
be rejected at any stage before completion. When transitioning
to completed, the proof may include generated report assets.
Returns the updated record with the new proof in meta.proofs.
Broadcasts the report-proofs-added signal. Use
effects to subscribe.
Usage Examples
curl -X POST "http://localhost:3000/v2/reports/<HANDLE>/proofs" \ -H "x-ledger: <YOUR LEDGER HANDLE>" \ -H "Content-Type: application/json" \ -d '{ "method": "ed25519-v2", "public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=", "digest": "4fe8083ac02ee001b49e6a519c1f2af78bf1d4ba8a0c0e50cec9a30ce68636f0", "result": "GD90bmf7LH43pH/jWHoSm065B1TLlX7jSmzPU9AdYzmER5N9D3k7fZUYlyIVNVwD5y2sqOH2i3CAl5p1b+QRBw==", "custom": { "moment": "2025-04-05T14:30:10.000Z", "status": "pending" } }'{
"luid": "$rep.-01xK7xYzA8jY0CD9",
"hash": "1f95c06af953019eac2885bb205fd815efe1995409a3fab1a9c17ea9af932eca",
"data": {
"handle": "payments-2025-01-01",
"schema": "trans_details_rep",
"custom": {
"start_timestamp": "2025-01-01T00:00:00.000Z",
"end_timestamp": "2025-01-02T00:00:00.000Z"
}
},
"meta": {
"status": "pending",
"moment": "2025-04-05T14:30:10.020Z",
"owners": [
"dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk="
],
"proofs": [
{
"signer": "tesla-bank-admin",
"method": "ed25519-v2",
"digest": "862f76b92b821a86169318ef9770260dae9a7d979809ae66db48d19f74f3d064",
"public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=",
"result": "/Xnf8iu5lLRaJ/lr3xc7LnjI5fv0X7p+L9qqQqCXlRinIG6pM1QIjqDkk05I1E9h6827oINKwY/viGRuQ5u1CQ==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z",
"status": "created"
}
},
{
"signer": "system",
"method": "ed25519-v2",
"digest": "eee006f4b0cf9fd8db46cc41cb45b73aa9ce2aeb78bfd57188e55a40024b8a0a",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "LgzSu4n2SiuphFlQNQxVGuZVGChYUXCo1KUDo3flnD+m3P2vBT/bRyxLff8S8puy5POc8sfvggcvs/9eriHjBQ==",
"custom": {
"luid": "$rep.-01xK7xYzA8jY0CD9",
"moment": "2025-04-05T14:30:00.050Z",
"status": "created"
}
},
{
"signer": "tesla-bank-admin",
"method": "ed25519-v2",
"digest": "4fe8083ac02ee001b49e6a519c1f2af78bf1d4ba8a0c0e50cec9a30ce68636f0",
"public": "dsZvr0rEw9sIffHlv1VP65x1NB8GeXezIv6HONk1SIk=",
"result": "GD90bmf7LH43pH/jWHoSm065B1TLlX7jSmzPU9AdYzmER5N9D3k7fZUYlyIVNVwD5y2sqOH2i3CAl5p1b+QRBw==",
"custom": {
"moment": "2025-04-05T14:30:10.000Z",
"status": "pending"
}
}
]
}
}{
"hash": "b7eb7ccf5ffc126951e13e29a8dcfdaf95db859715d4edfc2d16f59a79d4cd58",
"data": {
"reason": "auth.unauthorized",
"detail": "Invalid token."
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "3acece870c4118bfe4223118e4d2f3cfd5b8947a7093785b66d49aa57fa2890a",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "gnK63DqqWDY/UXvnZHixDKPKS6tfeGHgdARylnPiJLwQGyYxuD97TYbSg2wrzsf/bDrHwQYZaf8Gu5ryYP0UAA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "9ec02726b50650add8acfd124c6defeb978a9ac252a5de888f9493ddc701e927",
"data": {
"reason": "auth.forbidden",
"detail": "Request is not authorized"
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "4f8cbdc38d73348de0c31805c783c84a0fecc6be736d7e187004ba68cd00e675",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "P3hRnveehtuobb4AIO56XBmiduvmYJbpdmOHltG/IifBEH7QSWdv/0pqled4SO9x1Ne3oXuWxJy40DzMvx1MBA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "d6c59a6df7165fa4a75159799ca5f5e26e544cbb8769eced3d35d8021f6f7935",
"data": {
"reason": "record.not-found",
"detail": "Signer not found"
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "78cf86f34aefcf9da6ed4167a38aac0a2739f68f7bafb1d3e033c01ed1b6cdf1",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "9Ledk+/iAAtj+uLjGe2afq4kID7n8UQD6UpRpLBCujxFjxddq0uZ2tnYRTAXmYdHDkbF0uXqtNM9qO3xhEtpAA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "1c084e8dcfb9bb84bc8ea96e9e137b149a34b2bbd85f8e60b4263f5aba980476",
"data": {
"custom": {
"errors": [
{
"instancePath": "/handle",
"schemaPath": "#/properties/handle/pattern",
"keyword": "pattern",
"params": {
"pattern": "^[a-zA-Z0-9_\\-+.]+$"
},
"message": "must match pattern \"^[a-zA-Z0-9_\\-+.]+$\""
}
]
},
"reason": "record.schema-invalid",
"detail": "Schema validator error: data.handle must match pattern \"^[a-zA-Z0-9_\\-+.]+$\""
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "7a5febb431719b6f43d7e88e79211308e16ac651b71b339276373fdb4e7c3760",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "2/1zYw4AaIzsIHfOIC6V/CHw6owbjYHt48cwmFOig0ibeT0IbojLmj1RCRi8W00ka0udPa9WsacWDd7ObMY8CA==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}{
"hash": "93a5f4d97a42c2df97f827c58ff7768d02568c15aca931e22b81fa3160ba0df3",
"data": {
"reason": "api.unexpected-error",
"detail": "An unexpected error occurred"
},
"meta": {
"proofs": [
{
"signer": "system",
"method": "ed25519-v2",
"digest": "efaf5360143b586917d9636779ad6e08571c5b06909a20dd0f5eba4bf3be7eae",
"public": "bctQzN7mjMUNBIx4aSC8WYn03GJWoJjL/KrDb38oU5c=",
"result": "hERh6Aecj59iR+Fb25OQsHJScOi4t8EiffKSfjlMQdjHMccTnfDlgZFdaJzXzUtpSwy/NHq0l+7ydh3HSWCoAg==",
"custom": {
"moment": "2025-04-05T14:30:00.000Z"
}
}
]
}
}Path Parameters
The unique identifier of the record - it is luid or handle (address).
Header Parameters
The unique identifier of ledger in context for multi tenant requests.
Request Body
application/json
Proof body
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
Delete report DELETE
Permanently removes the report record. Generated report data stored externally is not automatically deleted. The [change history](/ledger/reference/api/report/list-report-changes) remains accessible after deletion — use the record's LUID to query it. Previous record versions can be retrieved for auditing. A [POST alternative](/ledger/reference/api/report/drop-report-post) is available for clients that cannot send request bodies with DELETE requests. Broadcasts the `report-dropped` signal. Use [effects](/ledger/reference/api/effect) to subscribe.
Check report access POST
Evaluates access policies for the calling signer and returns the resolved permissions. The request body specifies the action and optionally the record type to check against.