Skip to content

Commit 6e753dc

Browse files
committed
Add legacy manifests page
1 parent f83fdd5 commit 6e753dc

File tree

4 files changed

+129
-96
lines changed

4 files changed

+129
-96
lines changed

docs/manifest/assertions-actions.md

Lines changed: 93 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ id: assertions-actions
33
title: Assertions and actions
44
---
55

6-
## Assertions
6+
## Overview
77

8-
Assertions provide information about when, where, and how an asset was created or transformed.
8+
Assertions provide information about when, where, and how an asset was created or transformed.
99

10-
In the JSON manifest, each assertion is specified by a [ManifestAssertion](../manifest/manifest-ref.mdx#manifestassertion) object. All the assertions in the manifest are in the `assertions` array. A ManifestAssertion object has two required properties, `label`, a string, and `data`, which can contain arbitrary information; and two optional properties, `kind` and `instance`.
10+
In the JSON manifest, each assertion is specified by a [AssertionDefinition](./json-ref/manifest-def.mdx#assertiondefinition) object. All the assertions in the manifest are in the `assertions` array. A ManifestAssertion object has two required properties, `label`, a string, and `data`, which can contain arbitrary information; and two optional properties, `kind` and `instance`.
1111

1212
The standard form of an assertion in a JSON manifest is:
1313

@@ -26,75 +26,18 @@ The standard form of an assertion in a JSON manifest is:
2626
]
2727
```
2828

29-
**Metadata assertions**
29+
## CAWG metadata assertions
3030

31-
_Metadata assertions_ include
32-
- [Creative work](#creative-work-assertion)
33-
- [Exchangeable image file (Exif) information](#exif-assertion)
34-
- [IPTC photo and video metadata](#iptc-metadata-assertion)
31+
Use _CAWG metadata assertions_ to include metadata from metadata standards such as XMP, IPTC, and Exif in a manifest.
3532

3633
Metadata assertions must include one or more `@context` properties in the `data` object, as explained in the [JSON-LD](https://www.w3.org/TR/json-ld/#the-context) specification. Follow the examples shown in each section.
3734

38-
### C2PA standard assertions
39-
40-
The C2PA Technical Specification defines a [set of standard assertions](https://c2pa.org/specifications/specifications/1.4/specs/C2PA_Specification.html#_standard_c2pa_assertion_summary) and their corresponding labels. In addition, you can define [custom assertions](#custom-assertions) for your specific application.
41-
42-
The following table summarizes some of the most important standard assertions.
43-
4435
| Assertion | Label | Description |
4536
|-----------|-------|-------------|
46-
| [Actions](#actions) | `c2pa.actions` | Creation, edits, and other actions on an asset, such as cropping, color or contrast adjustment, and so on. |
47-
| ["Do not train"](#do-not-train-assertion) | `c2pa.training-mining` | Whether the creator/owner of an asset grants permission to use it for data mining or AI/ML training. |
4837
| [Creative work](#creative-work-assertion) | `stds.schema-org.CreativeWork` | Indicates the asset is the product of creative effort. |
4938
| [Exif information](#exif-assertion) | `stds.exif` | Camera information such as maker, lens stored in Exchangeable image file format (Exif). |
50-
| [Content bindings](#content-bindings) | `c2pa.hash.*`, `c2pa.soft-binding`, etc. | Uniquely identify portions of an asset and bind the assertion to it, for example using cryptographic hashes. |
5139
| [IPTC photo and video metadata](#iptc-metadata) | `stds.iptc` | Properties from the IPTC Photo and Video Metadata Standards, describing for example ownership, rights, and other metadata about a image or video asset. |
52-
53-
:::note
54-
The CAI SDK handles assertions for thumbnails, content bindings, and ingredients, so normally you don't need to think about them.
55-
:::
56-
57-
### Do not train assertion
58-
59-
Assertions with the `c2pa.training-mining` label indicate whether permission is granted to use an asset in data mining, machine learning (ML) training, or inference. The latter is sometimes referred to as the "do not infer" assertion.
60-
61-
| Entry Key | Whether permission is granted... | Possible values of `use` property |
62-
|-----------|-------------|-------------|
63-
| `c2pa.data_mining` | To extract text or data from the asset for purposes of determining "patterns, trends and correlations," including images containing text, where the text could be extracted via OCR. | `allowed`,<br/> `notAllowed`,<br/>or `constrained` |
64-
| `c2pa.ai_training` |To use the asset to train non-generative AI/ML models, such as those used for classification, object detection, and so on. | `allowed`,<br/> `notAllowed`,<br/>or `constrained` |
65-
| `c2pa.ai_generative_training` | To use the asset as training data for a generative AI/ML model that could produce derivative assets. | `allowed`,<br/> `notAllowed`,<br/>or `constrained` |
66-
| `c2pa.ai_inference` | To use the asset as input to a trained AI/ML model for the purposes of inferring a result. Sometimes referred to as the "do not infer" assertion. | `allowed`,<br/> `notAllowed`,<br/>or `constrained` |
67-
68-
The value of each of these properties is an object with a `use` property that can have one of these values:
69-
70-
- `allowed`: Permission is granted for this type of use.
71-
- `notAllowed`: Permission is NOT granted for this type of use.
72-
- `constrained`: Permission is not unconditionally granted for this use. You can provide more details (such as contact information) in the `constraints_info` text property.
73-
74-
For more information, see the [C2PA Technical Specification](https://c2pa.org/specifications/specifications/1.4/specs/C2PA_Specification.html#_training_and_data_mining).
75-
76-
For example:
77-
78-
```json
79-
"assertions": [
80-
...
81-
{
82-
"label": "c2pa.training-mining",
83-
"data": {
84-
"entries": {
85-
"c2pa.ai_generative_training": { "use": "notAllowed" },
86-
"c2pa.ai_inference": { "use": "notAllowed" },
87-
"c2pa.ai_training": { "use": "notAllowed" },
88-
"c2pa.data_mining": {
89-
"use": "constrained",
90-
"constraint_info" : "Contact [email protected] for more information."
91-
}
92-
}
93-
}
94-
}
95-
...
96-
]
97-
```
40+
| [Training and data mining](#do-not-train-assertion) | `cawg.training-mining` | Whether the creator/owner of an asset grants permission to use it for data mining or AI/ML training. NOTE: Previously, this assertion's label was `c2pa.training-mining`. |
9841

9942
### Creative work assertion
10043

@@ -215,6 +158,63 @@ For example:
215158
]
216159
```
217160

161+
### Training and data mining assertion
162+
163+
Assertions with the `cawg.training-mining` label provide information about whether an asset with C2PA metadata may be used as part of a data mining or AI/ML (artificial intelligence / machine learning) workflows, including whether permission is granted to use an asset in ML training or inference.
164+
165+
| Entry Key | Whether permission is granted... | Possible values of `use` property |
166+
|-----------|-------------|-------------|
167+
| `cawg.data_mining` | To extract text or data from the asset for purposes of determining "patterns, trends and correlations," including images containing text, where the text could be extracted via OCR. | `allowed`,<br/> `notAllowed`,<br/>or `constrained` |
168+
| `cawg.ai_inference` | To use the asset as input to a trained AI/ML model for the purposes of inferring a result. Sometimes referred to as the "do not infer" assertion. | `allowed`,<br/> `notAllowed`,<br/>or `constrained` |
169+
| `cawg.ai_generative_training` | To use the asset as training data for a generative AI/ML model that could produce derivative assets. Sometimes referred to as the "do not train" assertion. | `allowed`,<br/> `notAllowed`,<br/>or `constrained` |
170+
| `cawg.ai_training` |To use the asset to train non-generative AI/ML models, such as those used for classification, object detection, and so on. | `allowed`,<br/> `notAllowed`,<br/>or `constrained` |
171+
172+
The value of each of these properties is an object with a `use` property that can have one of these values:
173+
174+
- `allowed`: Permission is granted for this type of use.
175+
- `notAllowed`: Permission is NOT granted for this type of use.
176+
- `constrained`: Permission is not unconditionally granted for this use. You can provide more details (such as contact information) in the `constraints_info` text property.
177+
178+
For more information, see the [C2PA Technical Specification](https://cawg.org/specifications/specifications/1.4/specs/C2PA_Specification.html#_training_and_data_mining).
179+
180+
For example:
181+
182+
```json
183+
"assertions": [
184+
...
185+
{
186+
"label": "cawg.training-mining",
187+
"data": {
188+
"entries": {
189+
"cawg.ai_generative_training": { "use": "notAllowed" },
190+
"cawg.ai_inference": { "use": "notAllowed" },
191+
"cawg.ai_training": { "use": "notAllowed" },
192+
"cawg.data_mining": {
193+
"use": "constrained",
194+
"constraint_info" : "Contact [email protected] for more information."
195+
}
196+
}
197+
}
198+
}
199+
...
200+
]
201+
```
202+
203+
## C2PA standard assertions
204+
205+
The C2PA Technical Specification defines a [set of standard assertions](https://c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_standard_c2pa_assertion_summary) and their corresponding labels. In addition, you can define [custom assertions](#custom-assertions) for your specific application.
206+
207+
The following table summarizes some of the most important standard assertions.
208+
209+
| Assertion | Label | Description |
210+
|-----------|-------|-------------|
211+
| [Content bindings](#content-bindings) | `c2pa.hash.*`, `c2pa.soft-binding`, etc. | Uniquely identify portions of an asset and bind the assertion to it, for example using cryptographic hashes. |
212+
| [Actions](#actions) | `c2pa.actions` | Creation, edits, and other actions on an asset, such as cropping, color or contrast adjustment, and so on. |
213+
214+
:::note
215+
The CAI SDK handles assertions for thumbnails, content bindings, and ingredients, so normally you don't need to think about them.
216+
:::
217+
218218
### Content bindings
219219

220220
Content bindings are standard assertions such as `c2pa.hash.boxes` and `c2pa.hash.data` that uniquely identify portions of an asset. For more information on content bindings, see the [C2PA Technical Specification](https://c2pa.org/specifications/specifications/1.4/specs/C2PA_Specification.html#_binding_to_content).
@@ -244,32 +244,9 @@ For example, the `c2pa.hash.data` assertion shown in the [detailed manifest exam
244244
]
245245
```
246246

247-
### Custom assertions
248-
249-
In addition to the C2PA standard assertions, you can also define custom assertions if the standard assertions don't cover your specific needs. A custom assertion has a label string with [reverse domain name notation](https://en.wikipedia.org/wiki/Reverse_domain_name_notation) syntax, for example `com.adobe.product-foo.bar`.
250-
251-
For example:
252-
253-
```json
254-
"assertions": [
255-
...
256-
{
257-
"label": "com.mycompany.myproduct",
258-
"data": {
259-
"git_hash": "023bb51",
260-
"lib_name": "Our C2PA C++ Library",
261-
"lib_version": "2.5.1",
262-
"target_spec_version": "1.2"
263-
},
264-
"kind": "Json"
265-
},
266-
...
267-
]
268-
```
269-
270247
## Actions
271248

272-
An action is an assertion that provides information about creation, edits, and other things that have occurred to an asset. In the manifest, an `actions` assertion is an array of [ManifestAssertion](manifest-ref.mdx#manifestassertion) objects. For example:
249+
An action is an assertion that provides information about creation, edits, and other things that have occurred to an asset. In the manifest, an `actions` assertion is an array of [AssertionDefinition](json-ref/manifest-def.mdx#assertiondefinition) objects. For example:
273250

274251
```json
275252
...
@@ -301,18 +278,17 @@ Each object in the `actions` array has the following standard properties.
301278

302279
### Action names
303280

304-
The value of the `action` property must be either one of the pre-defined [standard C2PA action strings](https://c2pa.org/specifications/specifications/1.4/specs/C2PA_Specification.html#_actions) of the form `c2pa.*` or a custom action name. The set of standard C2PA actions includes fundamental ones as `c2pa.created` for when an asset is first created, and others (`c2pa.cropped`, `c2pa.resized`, and so on) for when an asset's content is modified in some way.
305-
306-
For the complete list of standard actions, see the [C2PA Technical Specification](https://c2pa.org/specifications/specifications/1.4/specs/C2PA_Specification.html#_actions).
281+
The value of the `action` property must be either one of the pre-defined [standard C2PA action strings](https://c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_actions) of the form `c2pa.*` or a custom action name. The set of standard C2PA actions includes fundamental ones as `c2pa.created` for when an asset is first created, and others (`c2pa.cropped`, `c2pa.resized`, and so on) for when an asset's content is modified in some way.
307282

283+
For the complete list of standard actions, see the [C2PA Technical Specification](https://c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_actions).
308284

309285
### Digital source type
310286

311287
Use the `digitalSourceType` property to specify how an asset was created or modified, for example "digital capture", "digitized from negative," or "trained algorithmic media."
312288

313-
The value of `digitalSourceType` is one of the URLs specified by the International Press Telecommunications Council (IPTC) [NewsCodes Digital Source Type scheme](https://cv.iptc.org/newscodes/digitalsourcetype/) of the form `http://cv.iptc.org/newscodes/digitalsourcetype/negativeFilm/<CODE>`, where `<CODE>` is one of the codes shown in the following table.
289+
The value of `digitalSourceType` is one of the URLs specified by the International Press Telecommunications Council (IPTC) [NewsCodes Digital Source Type scheme](https://cv.iptc.org/newscodes/digitalsourcetype/) of the form `http://cv.iptc.org/newscodes/digitalsourcetype/<CODE>`, where `<CODE>` is one of the codes shown in the following table.
314290

315-
| Code | Description |
291+
| Code | Description |`
316292
|---|---|
317293
| algorithmicallyEnhanced | Minor augmentation or correction by algorithm. |
318294
| algorithmicMedia | Media created purely by an algorithm not based on any sampled training data, e.g. an image created by software using a mathematical formula. |
@@ -321,7 +297,7 @@ The value of `digitalSourceType` is one of the URLs specified by the Internation
321297
| compositeSynthetic | Mix or composite of several elements, at least one of which is synthetic. |
322298
| compositeWithTrainedAlgorithmicMedia | The compositing of trained algorithmic media with some other media, such as with inpainting or outpainting operations. |
323299
| dataDrivenMedia | Digital media representation of data via human programming or creativity. |
324-
| digitalCreation | Media created by a human using non-generative tools. Use instead of retired digitalArt code. |
300+
| digitalCreation | Media created by a human using non-generative tools. Use instead of retired digitalArt code. |
325301
| digitalCapture | The digital media is captured from a real-life source using a digital camera or digital recording device. |
326302
| humanEdits | Augmentation, correction or enhancement by one or more humans using non-generative tools. Use instead of retired minorHumanEdits code. |
327303
| negativeFilm | The digital image was digitized from a negative on film or any other transparent medium. |
@@ -468,4 +444,27 @@ For example, the following action identifies that the `c2pa.opened` action was p
468444

469445
This documentation covers C2PA v1 actions. The [C2PA Technical Specification](https://c2pa.org/specifications/specifications/1.4/specs/C2PA_Specification.html#_actions) also describes expanded v2 actions. V1 actions are fully specified in the actions array. However, a v2 action may either be specified by an element of the actions array or from an element in the templates array with the same action name.
470446

471-
There are some additional differences between v1 and v2 actions, for example in v2, `softwareAgent` is a [ClaimGeneratorInfo](../manifest/manifest-ref.mdx#claimgeneratorinfo) structure instead of a string. The CAI APIs can read all v2 actions and write most v2 actions.
447+
There are some additional differences between v1 and v2 actions, for example in v2, `softwareAgent` is a [ClaimGeneratorInfo](json-ref/manifest-def.mdx#claimgeneratorinfo) structure instead of a string. The CAI APIs can read all v2 actions and write most v2 actions.
448+
449+
## Custom assertions
450+
451+
In addition to the C2PA standard assertions, you can also define custom assertions if the standard assertions don't cover your specific needs. A custom assertion has a label string with [reverse domain name notation](https://en.wikipedia.org/wiki/Reverse_domain_name_notation) syntax, for example `com.adobe.product-foo.bar`.
452+
453+
For example:
454+
455+
```json
456+
"assertions": [
457+
...
458+
{
459+
"label": "com.mycompany.myproduct",
460+
"data": {
461+
"git_hash": "023bb51",
462+
"lib_name": "Our C2PA C++ Library",
463+
"lib_version": "2.5.1",
464+
"target_spec_version": "1.2"
465+
},
466+
"kind": "Json"
467+
},
468+
...
469+
]
470+
```

docs/manifest/ingredients.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,20 @@ id: ingredients
33
title: Ingredients
44
---
55

6+
<div class="review-comment">
7+
8+
`digitalSourceType` is now required on every ingredient, previously it was not.
9+
10+
</div>
11+
612
## Overview
713

814
Digital assets are often not created entirely from scratch, but instead created from one or more existing assets, for example placing an image into a layer in Photoshop. Such constituent assets are called _ingredients_.
915

16+
<div class="review-comment">
17+
This should now cover v2 ingredients, right?
18+
</div>
19+
1020
This documentation covers C2PA v1 ingredients. The [C2PA Technical Specification](https://c2pa.org/specifications/specifications/1.4/specs/C2PA_Specification.html#_ingredient) also describes improved v2 ingredients.
1121

1222
:::note
@@ -15,9 +25,9 @@ The C2PA Technical Specification describes _ingredient assertions_ but the CAI S
1525

1626
## Ingredient objects
1727

18-
Each ingredient used to create an asset is listed in the [JSON manifest](manifest-ref.mdx) `ingredients` array. When an ingredient itself has Content Credentials, those manifests are included in the composed asset's manifest store to keep the provenance data intact.
28+
The `ingredients` array contains an element for each ingredient used to create an asset. When an ingredient itself has Content Credentials, those manifests are included in the composed asset's manifest store to keep the provenance data intact.
1929

20-
The `ingredients` array contains an [ingredient object](manifest-ref.mdx#ingredient) for each ingredient. The only required property of the `ingredient` object is the `title` property, which usually is the source file name.
30+
The `ingredients` array contains an [ingredient object](json-ref/manifest-def.mdx#ingredient) for each ingredient. The only required property of the `ingredient` object is the `title` property, which usually is the source file name.
2131

2232
Other important properties of the ingredient object include:
2333
- `format`: MIME type of the source file.

docs/manifest/legacy-assertions.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
id: legacy-manifests
3+
title: Reading old manifest data
4+
---
5+
6+
The latest C2PA technical specification is [version 2.2](https://c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html). CAI recommends that applications:
7+
- Write manifest data that conforms to this version.
8+
- Read and validate manifest data from content credentials from applications that implemented earlier versions of the C2PA technical specification. This ensures that your application is "backward-compatible" and can still validate assets that had claims written in the past.
9+
10+
11+
<div class="review-comment">
12+
13+
`c2pa.data_mining` > `cawg.data_mining`, etc. were renamed, with xref.
14+
15+
`SoftwareAgent` is now a structure
16+
17+
`digitalSourceType` is now required on every ingredient, previously it was not.
18+
19+
For READING old claims (only) … v1 actions and ingredients
20+
</div>

sidebars.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ const sidebars = {
4949
type: 'doc',
5050
id: 'manifest/cawg-id',
5151
},
52+
{
53+
type: 'doc',
54+
id: 'manifest/legacy-manifests',
55+
},
5256
{
5357
type: 'doc',
5458
id: 'manifest/manifest-examples',

0 commit comments

Comments
 (0)