The JSON representation of the action
Add CBOR assertion to the builder
The label of the assertion
The assertion, should be a string if the type is JSON, otherwise a JS Object
OptionalassertionKind: ManifestAssertionKindThe type of assertion
Add an ingredient to the manifest
The JSON representation of the ingredient
Optionalingredient: SourceAssetOptional source asset (buffer or file) for the ingredient
Add an ingredient to the manifest from a Reader
The Reader object of the ingredient
Redact an assertion from an ingredient manifest and record the reason.
Adds the URI to definition.redactions and appends a c2pa.redacted action
with parameters.redacted pointing to the same URI.
JUMBF URI of the assertion to redact (e.g. self#jumbf=/c2pa/{label}/c2pa.assertions/{name})
Why the assertion is being redacted. Use "c2pa.PII.present" for PII removal.
Add a resource from a buffer or file
The URI of the resource
The source and format of the resource
Experimental.
Retains only the actions for which keep returns true.
The inception action, c2pa.created or c2pa.opened, is always kept regardless of keep,
and is moved to index 0 if needed, so the manifest stays valid per the C2PA spec. Sets
allActionsIncluded = false when anything is removed. This does not touch ingredients.
Call filterIngredients, using filterIngredients(() => false) to drop all orphans,
afterwards if you also want to drop ingredients now orphaned by the removed actions.
The action is retained when the predicate returns true.
Experimental. Retains ingredients, then rewrites positional ingredient references so linked actions stay valid.
An ingredient is kept if it is referenced by a current action, is a parentOf ingredient,
or rescue returns true for it. rescue therefore only ever rescues an otherwise-orphaned
ingredient. It can never drop a referenced or lineage ingredient. Call filterActions
first if you are also removing actions: the keep-set is computed from whatever actions
currently remain.
rescue receives the ingredient and its provenance: the ingredient's embedded
manifest_data parsed into a ManifestStore, or null when it has no embedded
manifest. This lets the predicate make provenance-aware decisions, e.g. "this ingredient's
chain contains AI", without re-reading the whole builder first.
Can rescue an otherwise-orphaned ingredient by returning true.
Get the internal handle for use with Neon bindings
An intent lets the API know what kind of manifest to create.
Intents are Create, Edit, or Update.
This allows the API to check that you are doing the right thing.
It can also do things for you, like add parent ingredients from the source asset
and automatically add required c2pa.created or c2pa.opened actions.
Create requires a DigitalSourceType. It is used for assets without a parent ingredient.
Edit requires a parent ingredient and is used for most assets that are being edited.
Update is a special case with many restrictions but is more compact than Edit.
The intent of the manifest
Set the no embed flag of the manifest
The no embed flag of the manifest
Set the remote URL of the manifest
The remote URL of the manifest
Sign an asset from a buffer or file
The local signer to use
the bytes of the c2pa_manifest that was embedded
Sign an asset from a buffer or file asynchronously, using a CallbackSigner
The CallbackSigner
the bytes of the c2pa_manifest that was embedded
Sign an asset from a buffer or file asynchronously, using a callback and not passing a private key
The callback function to sign the asset
The configuration for the signer
the bytes of the c2pa_manifest that was embedded
Embed a signed manifest into a stream using the LocalSigner
The local signer to use
the bytes of the c2pa_manifest that was embedded
Convert the Builder into a archive formatted buffer or file
The file or buffer for the archive
Update a string property of the manifest
The manifest definition
Add a single action to the manifest. This is a convenience method for adding an action to the
Actionsassertion.