Use a Reader to read and validate a manifest store.
| Property | Type | Description | Required? | Default Value |
|---|---|---|---|---|
| active_manifest | String | A label for the active (most recent) manifest in the store |
NO | N/A |
| manifests | Object | A HashMap of Manifests See Manifest |
YES | N/A |
| validation_results | ValidationResults | ValidationStatus generated when loading the ManifestStore from an asset |
NO | N/A |
| validation_state | ValidationState | The validation state of the manifest store |
NO | N/A |
| validation_status | Array of ValidationStatus | ValidationStatus generated when loading the ManifestStore from an asset |
NO | N/A |
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 |
NO | N/A |
The AssertionMetadata 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 |
| localizations | Array of object | 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 |
| Property | Type | Description | Required? | Default Value |
|---|---|---|---|---|
| type | String | Description TBD. |
YES | N/A |
| version | String | Description TBD. |
NO | N/A |
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.
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 |
A description of the source for assertion data
| Property | Type | Description | Required? | Default Value |
|---|---|---|---|---|
| actors | Array of Actor | A list of [ |
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 |
A string.
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 |
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 |
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 [ |
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 |
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 |
NO | N/A |
| label | String | The ingredient’s label as assigned in the manifest. |
NO | N/A |
| manifest_data | ResourceRef | A |
NO | N/A |
| metadata | AssertionMetadata | Any additional |
NO | N/A |
| ocsp_responses | Array of ResourceRef | Description TBD. |
NO | N/A |
| provenance | String | URI from |
NO | N/A |
| relationship | Relationship | Set to 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 |
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 |
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 |
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 |
A Manifest represents all the information in a c2pa manifest
| Property | Type | Description | Required? | Default Value |
|---|---|---|---|---|
| assertions | An array of ManifestAssertion | A list of assertions |
NO | Empty array |
| claim_generator | String | 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. |
NO | N/A |
| claim_generator_info | Array of ClaimGeneratorInfo | A list of claim generator info data identifying the software/hardware/system produced this claim. |
NO | N/A |
| credentials | Array of true | A List of verified credentials |
NO | N/A |
| format | String | The format of the source file as a MIME type. |
NO | N/A |
| ingredients | An array of Ingredient | A List of ingredients |
NO | Empty array |
| instance_id | String | Instance ID from |
NO | xmp:iid:b017de99-3d68-40d0-9068-9e1fb309e99f |
| label | String | Description TBD. |
NO | N/A |
| metadata | Array of AssertionMetadata | A list of user metadata for this claim. |
NO | N/A |
| redactions | Array of string | A list of redactions - URIs to a redacted assertions |
NO | N/A |
| resources | ResourceStore | container for binary assets (like thumbnails) |
NO | N/A |
| signature_info | SignatureInfo | Signature data (only used for reporting) |
NO | N/A |
| thumbnail | ResourceRef | Description TBD. |
NO | N/A |
| title | String | A human-readable title, generally source filename. |
NO | N/A |
| vendor | String | Optional prefix added to the generated Manifest label. This is typically an internet domain name for the vendor (i.e. |
NO | N/A |
A labeled container for an Assertion value in a Manifest
| Property | Type | Description | Required? | Default Value |
|---|---|---|---|---|
| data | ManifestData | The data of the assertion as Value |
YES | N/A |
| instance |
Integer
(uint) Minimum: 0.0 |
There can be more than one assertion for any label |
NO | N/A |
| kind | ManifestAssertionKind | The [ManifestAssertionKind] for this assertion (as stored in c2pa content) |
NO | N/A |
| label | String | An assertion label in reverse domain format |
YES | N/A |
A string that is one of the following:
Description TBD.
Any of the following:
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 |
The type of range for the region of interest.
| RangeType | Type | Description |
|---|---|---|
| spatial | string | A spatial range, see [ |
| temporal | string | A temporal range, see [ |
| frame | string | A spatial range, see [ |
| textual | string | A textual range, see [ |
| identified | string | A range identified by a specific identifier and value, see [ |
A region of interest within an asset describing the change.
This struct can be used from [Action::changes][crate::assertions::Action::changes], [AssertionMetadata::region_of_interest][crate::assertions::AssertionMetadata::region_of_interest], or [SoftBindingScope::region][crate::assertions::soft_binding::SoftBindingScope::region].
| 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 | AssertionMetadata | 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 |
NO | N/A |
The relationship of the ingredient to the current asset.
| Relationship | Type | Description |
|---|---|---|
| parentOf | string | The current asset is derived from this ingredient. |
| componentOf | string | The current asset is a part of this ingredient. |
| inputTo | string | The ingredient was used as an input to a computational process to create or modify the asset. |
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 |
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 |
A rating on an Assertion. See https://c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_review_ratings.
| 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 |
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. |
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 |
The type of shape for the range.
| ShapeType | Type | Description |
|---|---|---|
| rectangle | string | A rectangle. |
| circle | string | A circle. |
| polygon | string | A polygon. |
Holds information about a signature
| Property | Type | Description | Required? | Default Value |
|---|---|---|---|---|
| alg | SigningAlg | Human-readable issuing authority for this signature. |
NO | N/A |
| cert_serial_number | String | The serial number of the certificate. |
NO | N/A |
| common_name | String | Human-readable for common name of this certificate. |
NO | N/A |
| issuer | String | Human-readable issuing authority for this signature. |
NO | N/A |
| revocation_status | Boolean | Revocation status of the certificate. |
NO | N/A |
| time | String | The time the signature was created. |
NO | N/A |
Describes the digital signature algorithms allowed by the C2PA spec.
Per §13.2, “Digital Signatures”:
All digital signatures applied as per the technical requirements of this > specification shall be generated using one of the digital signature > algorithms and key types listed as described in this section.
| SigningAlg | Type | Description |
|---|---|---|
| Es256 | string | ECDSA with SHA-256 |
| Es384 | string | ECDSA with SHA-384 |
| Es512 | string | ECDSA with SHA-512 |
| Ps256 | string | RSASSA-PSS using SHA-256 and MGF1 with SHA-256 |
| Ps384 | string | RSASSA-PSS using SHA-384 and MGF1 with SHA-384 |
| Ps512 | string | RSASSA-PSS using SHA-512 and MGF1 with SHA-512 |
| Ed25519 | string | Edwards-Curve DSA (Ed25519 instance only) |
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 |
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 |
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 |
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 |
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 |
The type of time.
| TimeType | Type | Description |
|---|---|---|
| npt | string | Times are described using Normal Play Time (npt) as described in RFC 2326. |
The type of unit for the range.
| UnitType | Type | Description |
|---|---|---|
| pixel | string | Use pixels. |
| percent | string | Use percentage. |
Description TBD.
Any of the following:
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 |
Indicates if the manifest store is valid and trusted.
The Trusted state implies the manifest store is valid and the active signature is trusted.
| ValidationState | Type | Description |
|---|---|---|
| Invalid | string | Errors were found in the manifest store. |
| Valid | string | No errors were found in validation, but the active signature is not trusted. |
| Trusted | string | The manifest store is valid and the active signature is trusted. |
A ValidationStatus struct describes the validation status of a specific part of a manifest.
See https://c2pa.org/specifications/specifications/2.2/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 |