Manifests

Validating Manifests

Overview

Whenever Que processes an asset, it validates the manifests in the asset’s manifest store. Validation is critical for proving integrity, catching tampering, and checking credential trust.

Validation runs both on the asset’s active manifest and on any ingredients included in it.


Quickstart: Inspect Validation Results

When you call verify, Que automatically validates the manifest. Validation issues appear inside the validation_status array.

const result = await client.verifyAsset({
  asset: { bucket: "que-assets-dev", key: "uploads/photo.jpg" },
  mode: "detailed"
});

console.log(result.report.validationStatus);
res = client.verify_asset({
  "asset": {"bucket": "que-assets-dev", "key": "uploads/photo.jpg"},
  "mode": "detailed"
})

print(res["report"]["validationStatus"])

Important

If validation_status is empty, the manifest is valid. Success is represented by absence of errors, not by a “true” flag.


Common Validation Failures

Validation failures can occur when:

  • The asset’s bytes change after signing.
  • Claims or assertions are missing or tampered.
  • Manifests are signed with an invalid credential.

Example Error Codes

CodeDescription
assertion.hashedURI.mismatchA stored hash and actual hash differ
assertion.dataHash.mismatchA declared data hash does not match
signingCredential.untrustedThe signing certificate is not in the trust list
signingCredential.revokedThe signing certificate has been revoked
signingCredential.expiredSigning certificate has expired

Validating Ingredients

Ingredients are validated on import. Their validation status is written to the ingredient’s own validation_status object.

Don’t assume the top-level manifest covers ingredient validation. Always check the ingredient’s own status separately.


Best Practices

  • Always inspect validation_status arrays on both manifest and ingredients.
  • Refresh the trust list regularly.
  • Treat missing or revoked credentials as untrusted by default.