Skip to main content

Reader reference

note

This is a beta release of this reference. It is a work in progress and may have issues or errors.

Reader

Use a Reader to read and validate a manifest store.

Properties

PropertyTypeDescriptionRequired?Default Value
active_manifestString

A label for the active (most recent) manifest in the store

NON/A
manifestsObject

A HashMap of Manifests

NO{}
validation_resultsEither ValidationResults or Null

ValidationStatus generated when loading the ManifestStore from an asset

NON/A
validation_stateEither ValidationState or Null

The validation state of the manifest store

NON/A
validation_statusArray of ValidationStatus

ValidationStatus generated when loading the ManifestStore from an asset

NON/A

Definitions

Actor

Identifies a person responsible for an action.

PropertyTypeDescriptionRequired?Default Value
credentialsArray of HashedUri

List of references to W3C Verifiable Credentials.

NON/A
identifierString

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

NON/A

AssertionMetadata

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

PropertyTypeDescriptionRequired?Default Value
dataSourceEither DataSource or NullN/ANON/A
dateTimeEither DateT or NullN/ANON/A
localizationsArray of ObjectN/ANON/A
referenceEither HashedUri or NullN/ANON/A
regionOfInterestEither RegionOfInterest or NullN/ANON/A
reviewRatingsArray of ReviewRatingN/ANON/A

AssetType

PropertyTypeDescriptionRequired?Default Value
typeStringN/AYESN/A
versionStringN/ANON/A

ClaimGeneratorInfo

Description of the claim generator, or the software used in generating the claim.

This structure is also used for actions softwareAgent

PropertyTypeDescriptionRequired?Default Value
iconEither UriOrResource or Null

hashed URI to the icon (either embedded or remote)

NON/A
nameString

A human readable string naming the claim_generator

YESN/A
operating_systemString

A human readable string of the OS the claim generator is running on. CrJSON schema uses operating_system; C2PA CBOR may use schema.org.SoftwareApplication.operatingSystem.

NON/A
versionString

A human readable string of the product's version

NON/A

Coordinate

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

PropertyTypeDescriptionRequired?Default Value
xNumber

The coordinate along the x-axis.

YESN/A
yNumber

The coordinate along the y-axis.

YESN/A

DataSource

A description of the source for assertion data

PropertyTypeDescriptionRequired?Default Value
actorsArray of Actor

A list of Actors associated with this source.

NON/A
detailsString

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

NON/A
typeString

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

YESN/A

DateT

PropertyTypeDescriptionRequired?Default Value
typeStringN/ANON/A

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.

PropertyTypeDescriptionRequired?Default Value
endInteger

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

NON/A
startInteger

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

The first frame/page starts at 0.

NON/A

HashedUri

A HashedUri provides a reference to content available within the same manifest store.

This is described in URI References in the C2PA Technical Specification.

PropertyTypeDescriptionRequired?Default Value
algString

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

NON/A
hashArray of Integer

Byte string containing the hash value

YESN/A
urlString

JUMBF URI reference

YESN/A

Ingredient

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

PropertyTypeDescriptionRequired?Default Value
active_manifestString

The active manifest label (if one exists).

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

NON/A
dataEither ResourceRef or Null

A reference to the actual data of the ingredient.

NON/A
data_typesArray of AssetType

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

NON/A
descriptionString

Additional description of the ingredient.

NON/A
document_idString

Document ID from xmpMM:DocumentID in XMP metadata.

NON/A
formatString

The format of the source file as a MIME type.

NON/A
hashString

An optional hash of the asset to prevent duplicates.

NON/A
informational_URIString

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

NON/A
instance_idString

Instance ID from xmpMM:InstanceID in XMP metadata.

NON/A
labelString

The ingredient's label as assigned in the manifest.

NON/A
manifest_dataEither ResourceRef or Null

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

NON/A
metadataEither AssertionMetadata or Null

Any additional Metadata as defined in the C2PA spec.

NON/A
ocsp_responsesArray of ResourceRefN/ANON/A
provenanceString

URI from dcterms:provenance in XMP metadata.

NON/A
relationshipRelationship

Set to ParentOf if this is the parent ingredient.

There can only be one parent ingredient in the ingredients.

NO"componentOf"
thumbnailEither ResourceRef or Null

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.

NON/A
titleString

A human-readable title, generally source filename.

NON/A
validation_resultsEither ValidationResults or Null

Validation results (Ingredient.V3)

NON/A
validation_statusArray of ValidationStatus

Validation status (Ingredient v1 & v2)

NON/A

IngredientDeltaValidationResult

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

PropertyTypeDescriptionRequired?Default Value
ingredientAssertionURIString

JUMBF URI reference to the ingredient assertion

YESN/A
validationDeltasStatusCodes

Validation results for the ingredient's active manifest

YESN/A

Item

Description of the boundaries of an identified range.

PropertyTypeDescriptionRequired?Default Value
identifierString

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

YESN/A
valueString

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

YESN/A

Manifest

A Manifest represents all the information in a c2pa manifest

PropertyTypeDescriptionRequired?Default Value
assertionsArray of ManifestAssertion

A list of assertions

NO[]
claim_generatorString

A User Agent formatted string identifying the software/hardware/system produced this claim Spaces are not allowed in names, versions can be specified with product/1.0 syntax.

NON/A
claim_generator_infoArray of ClaimGeneratorInfo

A list of claim generator info data identifying the software/hardware/system produced this claim.

NON/A
claim_versionInteger

The version of the claim, parsed from the claim label.

For example: - c2pa.claim.v2 -> 2 - c2pa.claim -> 1

NON/A
credentialsArray

A List of verified credentials

NON/A
formatString

The format of the source file as a MIME type.

NON/A
ingredientsArray of Ingredient

A List of ingredients

NON/A
instance_idString

Instance ID from xmpMM:InstanceID in XMP metadata.

NO"xmp:iid:82ad6fa6-260c-4dfc-a423-225f09114142"
labelStringN/ANON/A
metadataArray of AssertionMetadata

A list of user metadata for this claim.

NON/A
redactionsArray of String

JUMBF URIs of assertions that were redacted by this manifest.

Each entry has the form self#jumbf=/c2pa//c2pa.assertions/ and corresponds to an assertion that was intentionally removed from an ingredient manifest in the claim chain.

NON/A
signature_infoEither SignatureInfo or Null

Signature data (only used for reporting)

NON/A
thumbnailEither ResourceRef or NullN/ANON/A
titleString

A human-readable title, generally source filename.

NON/A
vendorString

Optional prefix added to the generated Manifest label. This is typically an internet domain name for the vendor (i.e. adobe).

NON/A

ManifestAssertion

A labeled container for an Assertion value in a Manifest

PropertyTypeDescriptionRequired?Default Value
createdBoolean

True if this assertion is attributed to the signer This maps to a created vs a gathered assertion. (defaults to false)

NON/A
dataManifestData

The data of the assertion as Value

YESN/A
instanceInteger

There can be more than one assertion for any label

NON/A
kindEither ManifestAssertionKind or Null

The ManifestAssertionKind for this assertion (as stored in c2pa content)

NON/A
labelString

An assertion label in reverse domain format

YESN/A

ManifestAssertionKind

Assertions in C2PA can be stored in several formats

PropertyTypeDescriptionRequired?Default Value
typeEnum (Cbor, Json, Binary, Uri)

Assertions in C2PA can be stored in several formats

NON/A

ManifestData

TypeDescriptionValue
ArrayN/AN/A

Range

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

PropertyTypeDescriptionRequired?Default Value
frameEither Frame or Null

A frame range.

NON/A
itemEither Item or Null

A item identifier.

NON/A
shapeEither Shape or Null

A spatial range.

NON/A
textEither Text or Null

A textual range.

NON/A
timeEither Time or Null

A temporal range.

NON/A
typeRangeType

The type of range of interest.

YESN/A

RangeType

The type of range for the region of interest.

TypeDescriptionValue
String

A spatial range, see Shape for more details.

spatial
String

A temporal range, see Time for more details.

temporal
String

A spatial range, see Frame for more details.

frame
String

A textual range, see Text for more details.

textual
String

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

identified

RegionOfInterest

A region of interest within an asset describing the change.

This struct can be used from Action::changes, AssertionMetadata::region_of_interest, or SoftBindingScope::region.

PropertyTypeDescriptionRequired?Default Value
descriptionString

A free-text string.

NON/A
identifierString

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

NON/A
metadataEither AssertionMetadata or Null

Additional information about the asset.

NON/A
nameString

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

NON/A
regionArray of Range

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

YESN/A
roleEither Role or Null

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.

NON/A
typeString

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.

NON/A

Relationship

The relationship of the ingredient to the current asset.

TypeDescriptionValue
String

The current asset is derived from this ingredient.

parentOf
String

The current asset is a part of this ingredient.

componentOf
String

The ingredient was used as an input to a computational process to create or modify the asset.

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_streamcrate::Reader::resource_to_stream.

PropertyTypeDescriptionRequired?Default Value
algString

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

NON/A
data_typesArray of AssetType

More detailed data types as defined in the C2PA spec.

NON/A
formatString

The mime type of the referenced resource.

YESN/A
hashString

The hash of the resource (if applicable).

NON/A
identifierString

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.

YESN/A

ReviewRating

A rating on an Assertion.

See C2PA Specification - Review Ratings.

PropertyTypeDescriptionRequired?Default Value
codeStringN/ANON/A
explanationStringN/AYESN/A
valueIntegerN/AYESN/A

Role

A role describing the region.

TypeDescriptionValue
String

Arbitrary area worth identifying.

c2pa.areaOfInterest
String

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

c2pa.cropped
String

This area has had edits applied to it.

c2pa.edited
String

The area where an ingredient was placed/added.

c2pa.placed
String

Something in this area was redacted.

c2pa.redacted
String

Area specific to a subject (human or not).

c2pa.subjectArea
String

A range of information was removed/deleted.

c2pa.deleted
String

Styling was applied to this area.

c2pa.styled
String

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

c2pa.watermarked

Shape

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

PropertyTypeDescriptionRequired?Default Value
heightNumber

The height of a rectnagle.

This field can be ignored for circles and polygons.

NON/A
insideBoolean

If the range is inside the shape.

The default value is true.

NON/A
originCoordinate

THe origin of the coordinate in the shape.

YESN/A
typeShapeType

The type of shape.

YESN/A
unitUnitType

The type of unit for the shape range.

YESN/A
verticesArray of Coordinate

The vertices of the polygon.

This field can be ignored for rectangles and circles.

NON/A
widthNumber

The width for rectangles or diameter for circles.

This field can be ignored for polygons.

NON/A

ShapeType

The type of shape for the range.

TypeDescriptionValue
String

A rectangle.

rectangle
String

A circle.

circle
String

A polygon.

polygon

SignatureInfo

Holds information about a signature

PropertyTypeDescriptionRequired?Default Value
algEither SigningAlgSchema or Null

Human-readable issuing authority for this signature.

NON/A
cert_serial_numberString

The serial number of the certificate.

NON/A
common_nameString

Human-readable for common name of this certificate.

NON/A
issuerString

Human-readable issuing authority for this signature.

NON/A
revocation_statusBoolean

Revocation status of the certificate.

NON/A
timeString

The time the signature was created.

NON/A

SigningAlgSchema

JSON Schema proxy for SigningAlg.

c2pa_raw_crypto::SigningAlg intentionally does not depend on schemars, so it does not implement schemars::JsonSchema. SDK types that expose a SigningAlg in their JSON schema reference this mirror (whose variants match SigningAlg's serialized form) via #[schemars(with = "...")].

PropertyTypeDescriptionRequired?Default Value
typeEnum (Es256, Es384, Es512, Ps256, Ps384, Ps512, Ed25519)

JSON Schema proxy for SigningAlg.

c2pa_raw_crypto::SigningAlg intentionally does not depend on schemars, so it does not implement schemars::JsonSchema. SDK types that expose a SigningAlg in their JSON schema reference this mirror (whose variants match SigningAlg's serialized form) via #[schemars(with = "...")].

NON/A

StatusCodes

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

PropertyTypeDescriptionRequired?Default Value
failureArray of ValidationStatus

An array of validation failure codes. May be empty.

YESN/A
informationalArray of ValidationStatus

An array of validation informational codes. May be empty.

YESN/A
successArray of ValidationStatus

An array of validation success codes. May be empty.

YESN/A

Text

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

PropertyTypeDescriptionRequired?Default Value
selectorsArray of TextSelectorRange

The ranges of text to select.

YESN/A

TextSelector

Selects a range of text via a fragment identifier.

This is modeled after the W3C Web Annotation selector model.

PropertyTypeDescriptionRequired?Default Value
endInteger

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

NON/A
fragmentString

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

YESN/A
startInteger

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

NON/A

TextSelectorRange

One or two TextSelector identifiying the range to select.

PropertyTypeDescriptionRequired?Default Value
endEither TextSelector or Null

The end of the text range.

NON/A
selectorTextSelector

The start (or entire) text range.

YESN/A

Time

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

PropertyTypeDescriptionRequired?Default Value
endString

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

NON/A
startString

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

NON/A
typeTimeType

The type of time.

NO"npt"

TimeType

The type of time.

TypeDescriptionValue
String

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

npt

UnitType

The type of unit for the range.

TypeDescriptionValue
String

Use pixels.

pixel
String

Use percentage.

percent

UriOrResource

TypeDescriptionValue
ResourceRefN/AN/A
HashedUriN/AN/A

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

PropertyTypeDescriptionRequired?Default Value
activeManifestEither StatusCodes or Null

Validation status codes for the ingredient's active manifest. Present if ingredient is a C2PA asset. Not present if the ingredient is not a C2PA asset.

NON/A
ingredientDeltasArray of IngredientDeltaValidationResult

List of any changes/deltas between the current and previous validation results for each ingredient's manifest. Present if the the ingredient is a C2PA asset.

NON/A
validationTimeString

Time when the validation was performed (RFC 3339 date-time). Used only for document-level validationInfo; not serialized in validationResults (e.g. ingredient assertions).

NON/A

ValidationState

Represents the levels of assurance a manifest store achieves when evaluated against the C2PA specifications structural, cryptographic, and trust requirements.

See Validation states - C2PA Technical Specification.

TypeDescriptionValue
String

The manifest store fails to meet ValidationState::WellFormed requirements, meaning it cannot even be parsed or its basic structure is non-compliant.

This case may also occur if validation is disabled in the SDK.

Invalid
String

The manifest store is well-formed and the cryptographic integrity checks succeed.

See Valid Manifest - C2PA Technical Specification.

Valid
String

The manifest store is valid and signed by a certificate that chains up to a trusted root or known authority in the trust list.

See Trusted Manifest - C2PA Technical Specification.

Trusted

ValidationStatus

A ValidationStatus struct describes the validation status of a specific part of a manifest.

See Existing Manifests - C2PA Technical Specification.

PropertyTypeDescriptionRequired?Default Value
codeStringN/AYESN/A
explanationStringN/ANON/A
successBooleanN/ANON/A
urlStringN/ANON/A