json-manifest-reference
Manifest Reference

CAI manifest definition reference

This page is generated from the unmodified JSON schema generated from c2pa-rs on 02/26/2025. It does not currently have anything redacted per the Review comments and questions.

ManifestDefinition

Use a ManifestDefinition to define a manifest and to build a ManifestStore. A manifest is a collection of ingredients and assertions used to define a claim that can be signed and embedded into a file..

Properties

Property Type Description Required?
assertions An array of AssertionDefinition

A list of assertions

NO
claim_generator_info An array of ClaimGeneratorInfo

Claim Generator Info is always required with at least one entry

NO
claim_version Integer (uint8)
Minimum: 0.0

The version of the claim. Defaults to 1.

NO
format String

The format of the source file as a MIME type.

NO
ingredients An array of Ingredient

A List of ingredients

NO
instance_id String

Instance ID from xmpMM:InstanceID in XMP metadata.

NO
label String

Allows you to pre-define the manifest label, which must be unique. Not intended for general use. If not set, it will be assigned automatically.

NO
metadata Array of Metadata

Optional manifest metadata. This will be deprecated in the future; not recommended to use.

NO
redactions Array of string

A list of redactions - URIs to redacted assertions.

NO
thumbnail ResourceRef

An optional ResourceRef to a thumbnail image that represents the asset that was signed. Must be available when the manifest is signed.

NO
title String

A human-readable title, generally source filename.

NO
vendor String

Optional prefix added to the generated Manifest Label This is typically a reverse domain name.

NO

Definitions

Actor
AssertionData
AssertionDefinition
AssetType
ClaimGeneratorInfo
Coordinate
DataSource
DateT
Frame
HashedUri
Ingredient
IngredientDeltaValidationResult
Item
Metadata
Range
RangeType
RegionOfInterest
Relationship
ResourceRef
ResourceStore
ReviewRating
Role
Shape
ShapeType
StatusCodes
Text
TextSelector
TextSelectorRange
Time
TimeType
UnitType
UriOrResource
ValidationResults
ValidationStatus

Actor

Identifies a person responsible for an action.

Property Type Description Required? Default Value
credentials Array of HashedUri

List of references to W3C Verifiable Credentials.

NO N/A
identifier String

An identifier for a human actor, used when the “type” is humanEntry.identified.

NO N/A

AssertionData

Description TBD.

Any of the following:

  • true

AssertionDefinition

Defines an assertion that consists of a label that can be either a C2PA-defined assertion label or a custom label in reverse domain format.

Property Type Description Required? Default Value
data

Description TBD.

YES N/A
label String

Description TBD.

YES N/A

AssetType

Property Type Description Required? Default Value
type String

Description TBD.

YES N/A
version String

Description TBD.

NO N/A

ClaimGeneratorInfo

Description of the claim generator, or the software used in generating the claim. This structure is also used for actions softwareAgent

Property Type Description Required? Default Value
icon UriOrResource

hashed URI to the icon (either embedded or remote)

NO N/A
name String

A human readable string naming the claim_generator

YES N/A
operating_system String

A human readable string of the OS the claim generator is running on

NO N/A
version String

A human readable string of the product’s version

NO N/A

NOTE: This object can have any number of additional user-defined properties.

Coordinate

An x, y coordinate used for specifying vertices in polygons.

Property Type Description Required? Default Value
x Number / double

The coordinate along the x-axis.

YES N/A
y Number / double

The coordinate along the y-axis.

YES N/A

DataSource

A description of the source for assertion data

Property Type Description Required? Default Value
actors Array of Actor

A list of [Actor]s associated with this source.

NO N/A
details String

A human-readable string giving details about the source of the assertion data.

NO N/A
type String

A value from among the enumerated list indicating the source of the assertion.

YES N/A

DateT

A string.

Frame

A frame range representing starting and ending frames or pages. If both start and end are missing, the frame will span the entire asset.

Property Type Description Required? Default Value
end Integer (int32)

The end of the frame inclusive or the end of the asset if not present.

NO N/A
start Integer (int32)

The start of the frame or the end of the asset if not present.

The first frame/page starts at 0.

NO N/A

HashedUri

A HashedUri provides a reference to content available within the same manifest store. This is described in [§8.3, URI References], of the C2PA Technical Specification. [§8.3, URI References]: https://c2pa.org/specifications/specifications/2.1/specs/C2PA_Specification.html#_uri_references

Property Type Description Required? Default Value
alg String

A string identifying the cryptographic hash algorithm used to compute the hash

NO N/A
hash An array of integer

Byte string containing the hash value

YES N/A
url String

JUMBF URI reference

YES N/A

Ingredient

An Ingredient is any external asset that has been used in the creation of an asset.

Property Type Description Required? Default Value
active_manifest String

The active manifest label (if one exists).

If this ingredient has a [ManifestStore], this will hold the label of the active Manifest.

NO N/A
data ResourceRef

A reference to the actual data of the ingredient.

NO N/A
data_types Array of AssetType

Additional information about the data’s type to the ingredient V2 structure.

NO N/A
description String

Additional description of the ingredient.

NO N/A
document_id String

Document ID from xmpMM:DocumentID in XMP metadata.

NO N/A
format String

The format of the source file as a MIME type.

NO N/A
hash String

An optional hash of the asset to prevent duplicates.

NO N/A
informational_URI String

URI to an informational page about the ingredient or its data.

NO N/A
instance_id String

Instance ID from xmpMM:InstanceID in XMP metadata.

NO N/A
manifest_data ResourceRef

A ManifestStore from the source asset extracted as a binary C2PA blob.

NO N/A
metadata Metadata

Any additional Metadata as defined in the C2PA spec.

NO N/A
provenance String

URI from dcterms:provenance in XMP metadata.

NO N/A
relationship Relationship

Set to ParentOf if this is the parent ingredient.

There can only be one parent ingredient in the ingredients.

NO componentOf
resources ResourceStore

Description TBD.

NO N/A
thumbnail ResourceRef

A thumbnail image capturing the visual state at the time of import.

A tuple of thumbnail MIME format (for example image/jpeg) and binary bits of the image.

NO N/A
title String

A human-readable title, generally source filename.

NO N/A
validation_results ValidationResults

Validation results (Ingredient.V3)

NO N/A
validation_status Array of ValidationStatus

Validation status (Ingredient v1 & v2)

NO N/A

IngredientDeltaValidationResult

Represents any changes or deltas between the current and previous validation results for an ingredient’s manifest.

Property Type Description Required? Default Value
ingredientAssertionURI String

JUMBF URI reference to the ingredient assertion

YES N/A
validationDeltas StatusCodes

Validation results for the ingredient’s active manifest

YES N/A

Item

Description of the boundaries of an identified range.

Property Type Description Required? Default Value
identifier String

The container-specific term used to identify items, such as “track_id” for MP4 or “item_ID” for HEIF.

YES N/A
value String

The value of the identifier, e.g. a value of “2” for an identifier of “track_id” would imply track 2 of the asset.

YES N/A

Metadata

The Metadata structure can be used as part of other assertions or on its own to reference others

Property Type Description Required? Default Value
dataSource DataSource

Description TBD.

NO N/A
dateTime DateT

Description TBD.

NO N/A
reference HashedUri

Description TBD.

NO N/A
regionOfInterest RegionOfInterest

Description TBD.

NO N/A
reviewRatings Array of ReviewRating

Description TBD.

NO N/A

NOTE: This object can have any number of additional user-defined properties.

Range

A spatial, temporal, frame, or textual range describing the region of interest.

Property Type Description Required? Default Value
frame Frame

A frame range.

NO N/A
item Item

A item identifier.

NO N/A
shape Shape

A spatial range.

NO N/A
text Text

A textual range.

NO N/A
time Time

A temporal range.

NO N/A
type RangeType

The type of range of interest.

YES N/A

RangeType

The type of range for the region of interest.

RangeType Type Description
spatial string

A spatial range, see [Shape] for more details.

temporal string

A temporal range, see [Time] for more details.

frame string

A spatial range, see [Frame] for more details.

textual string

A textual range, see [Text] for more details.

identified string

A range identified by a specific identifier and value, see [Item] for more details.

RegionOfInterest

A region of interest within an asset describing the change. This struct can be used from [Action::changes][crate::assertions::Action::changes] or [Metadata::region_of_interest][crate::assertions::Metadata::region_of_interest].

Property Type Description Required? Default Value
description String

A free-text string.

NO N/A
identifier String

A free-text string representing a machine-readable, unique to this assertion, identifier for the region.

NO N/A
metadata Metadata

Additional information about the asset.

NO N/A
name String

A free-text string representing a human-readable name for the region which might be used in a user interface.

NO N/A
region An array of Range

A range describing the region of interest for the specific asset.

YES N/A
role Role

A value from our controlled vocabulary or an entity-specific value (e.g., com.litware.coolArea) that represents the role of a region among other regions.

NO N/A
type String

A value from a controlled vocabulary such as https://cv.iptc.org/newscodes/imageregiontype/ or an entity-specific value (e.g., com.litware.newType) that represents the type of thing(s) depicted by a region.

Note this field serializes/deserializes into the name type.

NO N/A

Relationship

A string that is one of the following:

  • “parentOf”
  • “componentOf”
  • “inputTo”

ResourceRef

A reference to a resource to be used in JSON serialization. The underlying data can be read as a stream via [Reader::resource_to_stream][crate::Reader::resource_to_stream].

Property Type Description Required? Default Value
alg String

The algorithm used to hash the resource (if applicable).

NO N/A
data_types Array of AssetType

More detailed data types as defined in the C2PA spec.

NO N/A
format String

The mime type of the referenced resource.

YES N/A
hash String

The hash of the resource (if applicable).

NO N/A
identifier String

A URI that identifies the resource as referenced from the manifest.

This may be a JUMBF URI, a file path, a URL or any other string. Relative JUMBF URIs will be resolved with the manifest label. Relative file paths will be resolved with the base path if provided.

YES N/A

ResourceStore

Resource store to contain binary objects referenced from JSON serializable structures

Property Type Description Required? Default Value
base_path String

Description TBD.

NO N/A
label String

Description TBD.

NO N/A
resources (Object)

Description TBD.

YES N/A

ReviewRating

A rating on an Assertion. See https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_claim_review.

Property Type Description Required? Default Value
code String

Description TBD.

NO N/A
explanation String

Description TBD.

YES N/A
value Integer (uint8)
Minimum: 0.0

Description TBD.

YES N/A

Role

A role describing the region.

Role Type Description
c2pa.areaOfInterest string

Arbitrary area worth identifying.

c2pa.cropped string

This area is all that is left after a crop action.

c2pa.edited string

This area has had edits applied to it.

c2pa.placed string

The area where an ingredient was placed/added.

c2pa.redacted string

Something in this area was redacted.

c2pa.subjectArea string

Area specific to a subject (human or not).

c2pa.deleted string

A range of information was removed/deleted.

c2pa.styled string

Styling was applied to this area.

c2pa.watermarked string

Invisible watermarking was applied to this area for the purpose of soft binding.

Shape

A spatial range representing rectangle, circle, or a polygon.

Property Type Description Required? Default Value
height Number (double)

The height of a rectnagle.

This field can be ignored for circles and polygons.

NO N/A
inside Boolean

If the range is inside the shape.

The default value is true.

NO N/A
origin Coordinate

THe origin of the coordinate in the shape.

YES N/A
type ShapeType

The type of shape.

YES N/A
unit UnitType

The type of unit for the shape range.

YES N/A
vertices Array of Coordinate

The vertices of the polygon.

This field can be ignored for rectangles and circles.

NO N/A
width Number (double)

The width for rectangles or diameter for circles.

This field can be ignored for polygons.

NO N/A

ShapeType

The type of shape for the range.

ShapeType Type Description
rectangle string

A rectangle.

circle string

A circle.

polygon string

A polygon.

StatusCodes

Contains a set of success, informational, and failure validation status codes.

Property Type Description Required? Default Value
failure An array of ValidationStatus

Description TBD.

YES N/A
informational An array of ValidationStatus

Description TBD.

YES N/A
success An array of ValidationStatus

Description TBD.

YES N/A

Text

A textual range representing multiple (possibly discontinuous) ranges of text.

Property Type Description Required? Default Value
selectors An array of TextSelectorRange

The ranges of text to select.

YES N/A

TextSelector

Selects a range of text via a fragment identifier. This is modeled after the W3C Web Annotation selector model.

Property Type Description Required? Default Value
end Integer (int32)

The end character offset or the end of the fragment if not present.

NO N/A
fragment String

Fragment identifier as per RFC3023 (XML) or ISO 32000-2 (PDF), Annex O.

YES N/A
start Integer (int32)

The start character offset or the start of the fragment if not present.

NO N/A

TextSelectorRange

One or two [TextSelector][TextSelector] identifiying the range to select.

Property Type Description Required? Default Value
end TextSelector

The end of the text range.

NO N/A
selector TextSelector

The start (or entire) text range.

YES N/A

Time

A temporal range representing a starting time to an ending time.

Property Type Description Required? Default Value
end String

The end time or the end of the asset if not present.

NO N/A
start String

The start time or the start of the asset if not present.

NO N/A
type TimeType

The type of time.

NO npt

TimeType

The type of time.

TimeType Type Description
npt string

Times are described using Normal Play Time (npt) as described in RFC 2326.

UnitType

The type of unit for the range.

UnitType Type Description
pixel string

Use pixels.

percent string

Use percentage.

UriOrResource

Description TBD.

Any of the following:

ValidationResults

A map of validation results for a manifest store. The map contains the validation results for the active manifest and any ingredient deltas. It is normal for there to be many

Property Type Description Required? Default Value
activeManifest StatusCodes

Description TBD.

NO N/A
ingredientDeltas Array of IngredientDeltaValidationResult

Description TBD.

NO N/A

ValidationStatus

A ValidationStatus struct describes the validation status of a specific part of a manifest. See https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_existing_manifests.

Property Type Description Required? Default Value
code String

Description TBD.

YES N/A
explanation String

Description TBD.

NO N/A
success Boolean

Description TBD.

NO N/A
url String

Description TBD.

NO N/A