{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Reader",
"description": "A reader for the manifest store.",
"type": "object",
"required": [
"manifests"
],
"properties": {
"active_manifest": {
"description": "A label for the active (most recent) manifest in the store",
"type": [
"string",
"null"
]
},
"manifests": {
"description": "A HashMap of Manifests",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/Manifest"
}
},
"validation_results": {
"description": "ValidationStatus generated when loading the ManifestStore from an asset",
"anyOf": [
{
"$ref": "#/definitions/ValidationResults"
},
{
"type": "null"
}
]
},
"validation_state": {
"description": "The validation state of the manifest store",
"anyOf": [
{
"$ref": "#/definitions/ValidationState"
},
{
"type": "null"
}
]
},
"validation_status": {
"description": "ValidationStatus generated when loading the ManifestStore from an asset",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/ValidationStatus"
}
}
},
"definitions": {
"Actor": {
"description": "Identifies a person responsible for an action.",
"type": "object",
"properties": {
"credentials": {
"description": "List of references to W3C Verifiable Credentials.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/HashedUri"
}
},
"identifier": {
"description": "An identifier for a human actor, used when the \"type\" is `humanEntry.identified`.",
"type": [
"string",
"null"
]
}
}
},
"AssetType": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"version": {
"type": [
"string",
"null"
]
}
}
},
"ClaimGeneratorInfo": {
"description": "Description of the claim generator, or the software used in generating the claim.\n\nThis structure is also used for actions softwareAgent",
"type": "object",
"required": [
"name"
],
"properties": {
"icon": {
"description": "hashed URI to the icon (either embedded or remote)",
"anyOf": [
{
"$ref": "#/definitions/UriOrResource"
},
{
"type": "null"
}
]
},
"name": {
"description": "A human readable string naming the claim_generator",
"type": "string"
},
"operating_system": {
"description": "A human readable string of the OS the claim generator is running on",
"type": [
"string",
"null"
]
},
"version": {
"description": "A human readable string of the product's version",
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
},
"Coordinate": {
"description": "An x, y coordinate used for specifying vertices in polygons.",
"type": "object",
"required": [
"x",
"y"
],
"properties": {
"x": {
"description": "The coordinate along the x-axis.",
"type": "number",
"format": "double"
},
"y": {
"description": "The coordinate along the y-axis.",
"type": "number",
"format": "double"
}
}
},
"DataSource": {
"description": "A description of the source for assertion data",
"type": "object",
"required": [
"type"
],
"properties": {
"actors": {
"description": "A list of [`Actor`]s associated with this source.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Actor"
}
},
"details": {
"description": "A human-readable string giving details about the source of the assertion data.",
"type": [
"string",
"null"
]
},
"type": {
"description": "A value from among the enumerated list indicating the source of the assertion.",
"type": "string"
}
}
},
"DateT": {
"type": "string"
},
"Frame": {
"description": "A frame range representing starting and ending frames or pages.\n\nIf both `start` and `end` are missing, the frame will span the entire asset.",
"type": "object",
"properties": {
"end": {
"description": "The end of the frame inclusive or the end of the asset if not present.",
"type": [
"integer",
"null"
],
"format": "int32"
},
"start": {
"description": "The start of the frame or the end of the asset if not present.\n\nThe first frame/page starts at 0.",
"type": [
"integer",
"null"
],
"format": "int32"
}
}
},
"HashedUri": {
"description": "A `HashedUri` provides a reference to content available within the same manifest store.\n\nThis is described in [§8.3, URI References], of the C2PA Technical Specification.\n\n[§8.3, URI References]: https://c2pa.org/specifications/specifications/2.1/specs/C2PA_Specification.html#_uri_references",
"type": "object",
"required": [
"hash",
"url"
],
"properties": {
"alg": {
"description": "A string identifying the cryptographic hash algorithm used to compute the hash",
"type": [
"string",
"null"
]
},
"hash": {
"description": "Byte string containing the hash value",
"type": "array",
"items": {
"type": "integer",
"format": "uint8",
"minimum": 0.0
}
},
"url": {
"description": "JUMBF URI reference",
"type": "string"
}
}
},
"Ingredient": {
"description": "An `Ingredient` is any external asset that has been used in the creation of an asset.",
"type": "object",
"properties": {
"active_manifest": {
"description": "The active manifest label (if one exists).\n\nIf this ingredient has a [`ManifestStore`], this will hold the label of the active [`Manifest`].\n\n[`Manifest`]: crate::Manifest [`ManifestStore`]: crate::ManifestStore",
"type": [
"string",
"null"
]
},
"data": {
"description": "A reference to the actual data of the ingredient.",
"anyOf": [
{
"$ref": "#/definitions/ResourceRef"
},
{
"type": "null"
}
]
},
"data_types": {
"description": "Additional information about the data's type to the ingredient V2 structure.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/AssetType"
}
},
"description": {
"description": "Additional description of the ingredient.",
"type": [
"string",
"null"
]
},
"document_id": {
"description": "Document ID from `xmpMM:DocumentID` in XMP metadata.",
"type": [
"string",
"null"
]
},
"format": {
"description": "The format of the source file as a MIME type.",
"type": [
"string",
"null"
]
},
"hash": {
"description": "An optional hash of the asset to prevent duplicates.",
"type": [
"string",
"null"
]
},
"informational_URI": {
"description": "URI to an informational page about the ingredient or its data.",
"type": [
"string",
"null"
]
},
"instance_id": {
"description": "Instance ID from `xmpMM:InstanceID` in XMP metadata.",
"type": [
"string",
"null"
]
},
"label": {
"description": "The ingredient's label as assigned in the manifest.",
"type": [
"string",
"null"
]
},
"manifest_data": {
"description": "A [`ManifestStore`] from the source asset extracted as a binary C2PA blob.\n\n[`ManifestStore`]: crate::ManifestStore",
"anyOf": [
{
"$ref": "#/definitions/ResourceRef"
},
{
"type": "null"
}
]
},
"metadata": {
"description": "Any additional [`Metadata`] as defined in the C2PA spec.\n\n[`Metadata`]: crate::Metadata",
"anyOf": [
{
"$ref": "#/definitions/Metadata"
},
{
"type": "null"
}
]
},
"provenance": {
"description": "URI from `dcterms:provenance` in XMP metadata.",
"type": [
"string",
"null"
]
},
"relationship": {
"description": "Set to `ParentOf` if this is the parent ingredient.\n\nThere can only be one parent ingredient in the ingredients.",
"default": "componentOf",
"allOf": [
{
"$ref": "#/definitions/Relationship"
}
]
},
"resources": {
"readOnly": true,
"allOf": [
{
"$ref": "#/definitions/ResourceStore"
}
]
},
"thumbnail": {
"description": "A thumbnail image capturing the visual state at the time of import.\n\nA tuple of thumbnail MIME format (for example `image/jpeg`) and binary bits of the image.",
"anyOf": [
{
"$ref": "#/definitions/ResourceRef"
},
{
"type": "null"
}
]
},
"title": {
"description": "A human-readable title, generally source filename.",
"type": [
"string",
"null"
]
},
"validation_results": {
"description": "Validation results (Ingredient.V3)",
"anyOf": [
{
"$ref": "#/definitions/ValidationResults"
},
{
"type": "null"
}
]
},
"validation_status": {
"description": "Validation status (Ingredient v1 & v2)",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/ValidationStatus"
}
}
}
},
"IngredientDeltaValidationResult": {
"description": "Represents any changes or deltas between the current and previous validation results for an ingredient's manifest.",
"type": "object",
"required": [
"ingredientAssertionURI",
"validationDeltas"
],
"properties": {
"ingredientAssertionURI": {
"description": "JUMBF URI reference to the ingredient assertion",
"type": "string"
},
"validationDeltas": {
"description": "Validation results for the ingredient's active manifest",
"allOf": [
{
"$ref": "#/definitions/StatusCodes"
}
]
}
}
},
"Item": {
"description": "Description of the boundaries of an identified range.",
"type": "object",
"required": [
"identifier",
"value"
],
"properties": {
"identifier": {
"description": "The container-specific term used to identify items, such as \"track_id\" for MP4 or \"item_ID\" for HEIF.",
"type": "string"
},
"value": {
"description": "The value of the identifier, e.g. a value of \"2\" for an identifier of \"track_id\" would imply track 2 of the asset.",
"type": "string"
}
}
},
"Manifest": {
"description": "A Manifest represents all the information in a c2pa manifest",
"type": "object",
"properties": {
"assertions": {
"description": "A list of assertions",
"default": [],
"type": "array",
"items": {
"$ref": "#/definitions/ManifestAssertion"
}
},
"claim_generator": {
"description": "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",
"type": [
"string",
"null"
]
},
"claim_generator_info": {
"description": "A list of claim generator info data identifying the software/hardware/system produced this claim",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/ClaimGeneratorInfo"
}
},
"credentials": {
"description": "A List of verified credentials",
"type": [
"array",
"null"
],
"items": true
},
"format": {
"description": "The format of the source file as a MIME type.",
"type": [
"string",
"null"
]
},
"ingredients": {
"description": "A List of ingredients",
"default": [],
"type": "array",
"items": {
"$ref": "#/definitions/Ingredient"
}
},
"instance_id": {
"description": "Instance ID from `xmpMM:InstanceID` in XMP metadata.",
"default": "xmp:iid:424afed8-279d-4793-a279-b80a00b8c32b",
"type": "string"
},
"label": {
"type": [
"string",
"null"
]
},
"metadata": {
"description": "A list of user metadata for this claim",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Metadata"
}
},
"redactions": {
"description": "A list of redactions - URIs to a redacted assertions",
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"resources": {
"description": "container for binary assets (like thumbnails)",
"readOnly": true,
"allOf": [
{
"$ref": "#/definitions/ResourceStore"
}
]
},
"signature_info": {
"description": "Signature data (only used for reporting)",
"anyOf": [
{
"$ref": "#/definitions/SignatureInfo"
},
{
"type": "null"
}
]
},
"thumbnail": {
"anyOf": [
{
"$ref": "#/definitions/ResourceRef"
},
{
"type": "null"
}
]
},
"title": {
"description": "A human-readable title, generally source filename.",
"type": [
"string",
"null"
]
},
"vendor": {
"description": "Optional prefix added to the generated Manifest Label This is typically Internet domain name for the vendor (i.e. `adobe`)",
"type": [
"string",
"null"
]
}
}
},
"ManifestAssertion": {
"description": "A labeled container for an Assertion value in a Manifest",
"type": "object",
"required": [
"data",
"label"
],
"properties": {
"data": {
"description": "The data of the assertion as Value",
"allOf": [
{
"$ref": "#/definitions/ManifestData"
}
]
},
"instance": {
"description": "There can be more than one assertion for any label",
"type": [
"integer",
"null"
],
"format": "uint",
"minimum": 0.0
},
"kind": {
"description": "The [ManifestAssertionKind] for this assertion (as stored in c2pa content)",
"anyOf": [
{
"$ref": "#/definitions/ManifestAssertionKind"
},
{
"type": "null"
}
]
},
"label": {
"description": "An assertion label in reverse domain format",
"type": "string"
}
}
},
"ManifestAssertionKind": {
"description": "Assertions in C2PA can be stored in several formats",
"type": "string",
"enum": [
"Cbor",
"Json",
"Binary",
"Uri"
]
},
"ManifestData": {
"anyOf": [
true,
{
"type": "array",
"items": {
"type": "integer",
"format": "uint8",
"minimum": 0.0
}
}
]
},
"Metadata": {
"description": "The Metadata structure can be used as part of other assertions or on its own to reference others",
"type": "object",
"properties": {
"dataSource": {
"anyOf": [
{
"$ref": "#/definitions/DataSource"
},
{
"type": "null"
}
]
},
"dateTime": {
"anyOf": [
{
"$ref": "#/definitions/DateT"
},
{
"type": "null"
}
]
},
"reference": {
"anyOf": [
{
"$ref": "#/definitions/HashedUri"
},
{
"type": "null"
}
]
},
"regionOfInterest": {
"anyOf": [
{
"$ref": "#/definitions/RegionOfInterest"
},
{
"type": "null"
}
]
},
"reviewRatings": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/ReviewRating"
}
}
},
"additionalProperties": true
},
"Range": {
"description": "A spatial, temporal, frame, or textual range describing the region of interest.",
"type": "object",
"required": [
"type"
],
"properties": {
"frame": {
"description": "A frame range.",
"anyOf": [
{
"$ref": "#/definitions/Frame"
},
{
"type": "null"
}
]
},
"item": {
"description": "A item identifier.",
"anyOf": [
{
"$ref": "#/definitions/Item"
},
{
"type": "null"
}
]
},
"shape": {
"description": "A spatial range.",
"anyOf": [
{
"$ref": "#/definitions/Shape"
},
{
"type": "null"
}
]
},
"text": {
"description": "A textual range.",
"anyOf": [
{
"$ref": "#/definitions/Text"
},
{
"type": "null"
}
]
},
"time": {
"description": "A temporal range.",
"anyOf": [
{
"$ref": "#/definitions/Time"
},
{
"type": "null"
}
]
},
"type": {
"description": "The type of range of interest.",
"allOf": [
{
"$ref": "#/definitions/RangeType"
}
]
}
}
},
"RangeType": {
"description": "The type of range for the region of interest.",
"oneOf": [
{
"description": "A spatial range, see [`Shape`] for more details.",
"type": "string",
"enum": [
"spatial"
]
},
{
"description": "A temporal range, see [`Time`] for more details.",
"type": "string",
"enum": [
"temporal"
]
},
{
"description": "A spatial range, see [`Frame`] for more details.",
"type": "string",
"enum": [
"frame"
]
},
{
"description": "A textual range, see [`Text`] for more details.",
"type": "string",
"enum": [
"textual"
]
},
{
"description": "A range identified by a specific identifier and value, see [`Item`] for more details.",
"type": "string",
"enum": [
"identified"
]
}
]
},
"RegionOfInterest": {
"description": "A region of interest within an asset describing the change.\n\nThis struct can be used from [`Action::changes`][crate::assertions::Action::changes] or [`Metadata::region_of_interest`][crate::assertions::Metadata::region_of_interest].",
"type": "object",
"required": [
"region"
],
"properties": {
"description": {
"description": "A free-text string.",
"type": [
"string",
"null"
]
},
"identifier": {
"description": "A free-text string representing a machine-readable, unique to this assertion, identifier for the region.",
"type": [
"string",
"null"
]
},
"metadata": {
"description": "Additional information about the asset.",
"anyOf": [
{
"$ref": "#/definitions/Metadata"
},
{
"type": "null"
}
]
},
"name": {
"description": "A free-text string representing a human-readable name for the region which might be used in a user interface.",
"type": [
"string",
"null"
]
},
"region": {
"description": "A range describing the region of interest for the specific asset.",
"type": "array",
"items": {
"$ref": "#/definitions/Range"
}
},
"role": {
"description": "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.",
"anyOf": [
{
"$ref": "#/definitions/Role"
},
{
"type": "null"
}
]
},
"type": {
"description": "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.\n\nNote this field serializes/deserializes into the name `type`.",
"type": [
"string",
"null"
]
}
}
},
"Relationship": {
"type": "string",
"enum": [
"parentOf",
"componentOf",
"inputTo"
]
},
"ResourceRef": {
"description": "A reference to a resource to be used in JSON serialization.\n\nThe underlying data can be read as a stream via [`Reader::resource_to_stream`][crate::Reader::resource_to_stream].",
"type": "object",
"required": [
"format",
"identifier"
],
"properties": {
"alg": {
"description": "The algorithm used to hash the resource (if applicable).",
"type": [
"string",
"null"
]
},
"data_types": {
"description": "More detailed data types as defined in the C2PA spec.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/AssetType"
}
},
"format": {
"description": "The mime type of the referenced resource.",
"type": "string"
},
"hash": {
"description": "The hash of the resource (if applicable).",
"type": [
"string",
"null"
]
},
"identifier": {
"description": "A URI that identifies the resource as referenced from the manifest.\n\nThis 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.",
"type": "string"
}
}
},
"ResourceStore": {
"description": "Resource store to contain binary objects referenced from JSON serializable structures",
"type": "object",
"required": [
"resources"
],
"properties": {
"base_path": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"resources": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "integer",
"format": "uint8",
"minimum": 0.0
}
}
}
}
},
"ReviewRating": {
"description": "A rating on an Assertion.\n\nSee <https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_claim_review>.",
"type": "object",
"required": [
"explanation",
"value"
],
"properties": {
"code": {
"type": [
"string",
"null"
]
},
"explanation": {
"type": "string"
},
"value": {
"type": "integer",
"format": "uint8",
"minimum": 0.0
}
}
},
"Role": {
"description": "A role describing the region.",
"oneOf": [
{
"description": "Arbitrary area worth identifying.",
"type": "string",
"enum": [
"c2pa.areaOfInterest"
]
},
{
"description": "This area is all that is left after a crop action.",
"type": "string",
"enum": [
"c2pa.cropped"
]
},
{
"description": "This area has had edits applied to it.",
"type": "string",
"enum": [
"c2pa.edited"
]
},
{
"description": "The area where an ingredient was placed/added.",
"type": "string",
"enum": [
"c2pa.placed"
]
},
{
"description": "Something in this area was redacted.",
"type": "string",
"enum": [
"c2pa.redacted"
]
},
{
"description": "Area specific to a subject (human or not).",
"type": "string",
"enum": [
"c2pa.subjectArea"
]
},
{
"description": "A range of information was removed/deleted.",
"type": "string",
"enum": [
"c2pa.deleted"
]
},
{
"description": "Styling was applied to this area.",
"type": "string",
"enum": [
"c2pa.styled"
]
},
{
"description": "Invisible watermarking was applied to this area for the purpose of soft binding.",
"type": "string",
"enum": [
"c2pa.watermarked"
]
}
]
},
"Shape": {
"description": "A spatial range representing rectangle, circle, or a polygon.",
"type": "object",
"required": [
"origin",
"type",
"unit"
],
"properties": {
"height": {
"description": "The height of a rectnagle.\n\nThis field can be ignored for circles and polygons.",
"type": [
"number",
"null"
],
"format": "double"
},
"inside": {
"description": "If the range is inside the shape.\n\nThe default value is true.",
"type": [
"boolean",
"null"
]
},
"origin": {
"description": "THe origin of the coordinate in the shape.",
"allOf": [
{
"$ref": "#/definitions/Coordinate"
}
]
},
"type": {
"description": "The type of shape.",
"allOf": [
{
"$ref": "#/definitions/ShapeType"
}
]
},
"unit": {
"description": "The type of unit for the shape range.",
"allOf": [
{
"$ref": "#/definitions/UnitType"
}
]
},
"vertices": {
"description": "The vertices of the polygon.\n\nThis field can be ignored for rectangles and circles.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Coordinate"
}
},
"width": {
"description": "The width for rectangles or diameter for circles.\n\nThis field can be ignored for polygons.",
"type": [
"number",
"null"
],
"format": "double"
}
}
},
"ShapeType": {
"description": "The type of shape for the range.",
"oneOf": [
{
"description": "A rectangle.",
"type": "string",
"enum": [
"rectangle"
]
},
{
"description": "A circle.",
"type": "string",
"enum": [
"circle"
]
},
{
"description": "A polygon.",
"type": "string",
"enum": [
"polygon"
]
}
]
},
"SignatureInfo": {
"description": "Holds information about a signature",
"type": "object",
"properties": {
"alg": {
"description": "Human-readable issuing authority for this signature.",
"anyOf": [
{
"$ref": "#/definitions/SigningAlg"
},
{
"type": "null"
}
]
},
"cert_serial_number": {
"description": "The serial number of the certificate.",
"type": [
"string",
"null"
]
},
"issuer": {
"description": "Human-readable issuing authority for this signature.",
"type": [
"string",
"null"
]
},
"revocation_status": {
"description": "Revocation status of the certificate.",
"type": [
"boolean",
"null"
]
},
"time": {
"description": "The time the signature was created.",
"type": [
"string",
"null"
]
}
}
},
"SigningAlg": {
"description": "Describes the digital signature algorithms allowed by the C2PA spec.\n\nPer [§13.2, “Digital Signatures”]:\n\n> 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.\n\n[§13.2, “Digital Signatures”]: https://c2pa.org/specifications/specifications/2.1/specs/C2PA_Specification.html#_digital_signatures",
"oneOf": [
{
"description": "ECDSA with SHA-256",
"type": "string",
"enum": [
"Es256"
]
},
{
"description": "ECDSA with SHA-384",
"type": "string",
"enum": [
"Es384"
]
},
{
"description": "ECDSA with SHA-512",
"type": "string",
"enum": [
"Es512"
]
},
{
"description": "RSASSA-PSS using SHA-256 and MGF1 with SHA-256",
"type": "string",
"enum": [
"Ps256"
]
},
{
"description": "RSASSA-PSS using SHA-384 and MGF1 with SHA-384",
"type": "string",
"enum": [
"Ps384"
]
},
{
"description": "RSASSA-PSS using SHA-512 and MGF1 with SHA-512",
"type": "string",
"enum": [
"Ps512"
]
},
{
"description": "Edwards-Curve DSA (Ed25519 instance only)",
"type": "string",
"enum": [
"Ed25519"
]
}
]
},
"StatusCodes": {
"description": "Contains a set of success, informational, and failure validation status codes.",
"type": "object",
"required": [
"failure",
"informational",
"success"
],
"properties": {
"failure": {
"type": "array",
"items": {
"$ref": "#/definitions/ValidationStatus"
}
},
"informational": {
"type": "array",
"items": {
"$ref": "#/definitions/ValidationStatus"
}
},
"success": {
"type": "array",
"items": {
"$ref": "#/definitions/ValidationStatus"
}
}
}
},
"Text": {
"description": "A textual range representing multiple (possibly discontinuous) ranges of text.",
"type": "object",
"required": [
"selectors"
],
"properties": {
"selectors": {
"description": "The ranges of text to select.",
"type": "array",
"items": {
"$ref": "#/definitions/TextSelectorRange"
}
}
}
},
"TextSelector": {
"description": "Selects a range of text via a fragment identifier.\n\nThis is modeled after the W3C Web Annotation selector model.",
"type": "object",
"required": [
"fragment"
],
"properties": {
"end": {
"description": "The end character offset or the end of the fragment if not present.",
"type": [
"integer",
"null"
],
"format": "int32"
},
"fragment": {
"description": "Fragment identifier as per RFC3023 (XML) or ISO 32000-2 (PDF), Annex O.",
"type": "string"
},
"start": {
"description": "The start character offset or the start of the fragment if not present.",
"type": [
"integer",
"null"
],
"format": "int32"
}
}
},
"TextSelectorRange": {
"description": "One or two [`TextSelector`][TextSelector] identifiying the range to select.",
"type": "object",
"required": [
"selector"
],
"properties": {
"end": {
"description": "The end of the text range.",
"anyOf": [
{
"$ref": "#/definitions/TextSelector"
},
{
"type": "null"
}
]
},
"selector": {
"description": "The start (or entire) text range.",
"allOf": [
{
"$ref": "#/definitions/TextSelector"
}
]
}
}
},
"Time": {
"description": "A temporal range representing a starting time to an ending time.",
"type": "object",
"properties": {
"end": {
"description": "The end time or the end of the asset if not present.",
"type": [
"string",
"null"
]
},
"start": {
"description": "The start time or the start of the asset if not present.",
"type": [
"string",
"null"
]
},
"type": {
"description": "The type of time.",
"default": "npt",
"allOf": [
{
"$ref": "#/definitions/TimeType"
}
]
}
}
},
"TimeType": {
"description": "The type of time.",
"oneOf": [
{
"description": "Times are described using Normal Play Time (npt) as described in RFC 2326.",
"type": "string",
"enum": [
"npt"
]
}
]
},
"UnitType": {
"description": "The type of unit for the range.",
"oneOf": [
{
"description": "Use pixels.",
"type": "string",
"enum": [
"pixel"
]
},
{
"description": "Use percentage.",
"type": "string",
"enum": [
"percent"
]
}
]
},
"UriOrResource": {
"anyOf": [
{
"$ref": "#/definitions/ResourceRef"
},
{
"$ref": "#/definitions/HashedUri"
}
]
},
"ValidationResults": {
"description": "A map of validation results for a manifest store.\n\nThe map contains the validation results for the active manifest and any ingredient deltas. It is normal for there to be many",
"type": "object",
"properties": {
"activeManifest": {
"anyOf": [
{
"$ref": "#/definitions/StatusCodes"
},
{
"type": "null"
}
]
},
"ingredientDeltas": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/IngredientDeltaValidationResult"
}
}
}
},
"ValidationState": {
"description": "Indicates if the manifest store is valid and trusted.\n\nThe Trusted state implies the manifest store is valid and the active signature is trusted.",
"oneOf": [
{
"description": "Errors were found in the manifest store.",
"type": "string",
"enum": [
"Invalid"
]
},
{
"description": "No errors were found in validation, but the active signature is not trusted.",
"type": "string",
"enum": [
"Valid"
]
},
{
"description": "The manifest store is valid and the active signature is trusted.",
"type": "string",
"enum": [
"Trusted"
]
}
]
},
"ValidationStatus": {
"description": "A `ValidationStatus` struct describes the validation status of a specific part of a manifest.\n\nSee <https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_existing_manifests>.",
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string"
},
"explanation": {
"type": [
"string",
"null"
]
},
"success": {
"writeOnly": true,
"type": [
"boolean",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
}
}
}
}
}