Two-layer Merkle proof for a CF in a dataset

There is no `{version}` path segment because a `datasetId` **is** the version identifier — each assembled version has its own id. Address the exact version directly, as with every other `/v1/datasets/{id}/*` route. A 500 here may be an integrity failure — the recomputed root not matching the stored one. The response carries only a generic sentinel; the computed-versus-stored detail is logged server-side deliberately.

GET
/v1/datasets/{id}/cf/{cfId}/proof
/v1/datasets/{id}/cf/{cfId}/proof

Path Parameters

id
Required
string

The dataset version's 32-byte id.

Pattern: "^0[xX][0-9a-fA-F]{64}$"

cfId
Required
string

The contribution fingerprint's 32-byte id. Note the spelling: the nested dataset routes use {cfId} while the top-level /v1/cfs routes use {cf_id} for the same value — see CfIdParam.

Pattern: "^0[xX][0-9a-fA-F]{64}$"
curl -X GET "http://lineage-api.xny-staging.svc.cluster.local:8001/v1/datasets/0x807bacabedff64313f86ee41a00c566462c8b6fc807bacabedff64313f86ee41/cf/0x807bacabedff64313f86ee41a00c566462c8b6fc807bacabedff64313f86ee41/proof"

The proof bundle.

{
  "datasetId": "0x807bacabedff64313f86ee41a00c566462c8b6fc807bacabedff64313f86ee41",
  "contributorsMerkleRoot": "0x807bacabedff64313f86ee41a00c566462c8b6fc807bacabedff64313f86ee41",
  "chainId": "string",
  "contract": "string",
  "contributorDidId": "string",
  "shareAmount": "string",
  "cfId": "0x807bacabedff64313f86ee41a00c566462c8b6fc807bacabedff64313f86ee41",
  "cfMerkleRoot": "0x807bacabedff64313f86ee41a00c566462c8b6fc807bacabedff64313f86ee41",
  "cfLeafIndex": 0,
  "cfProof": [
    "0x807bacabedff64313f86ee41a00c566462c8b6fc807bacabedff64313f86ee41"
  ],
  "contributorLeafIndex": 0,
  "claimProof": [
    "0x807bacabedff64313f86ee41a00c566462c8b6fc807bacabedff64313f86ee41"
  ],
  "cfIds": [
    "0x807bacabedff64313f86ee41a00c566462c8b6fc807bacabedff64313f86ee41"
  ]
}

Last updated