You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/manifest/assertions-actions.md
+93-94Lines changed: 93 additions & 94 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,11 +3,11 @@ id: assertions-actions
3
3
title: Assertions and actions
4
4
---
5
5
6
-
## Assertions
6
+
## Overview
7
7
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.
9
9
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`.
11
11
12
12
The standard form of an assertion in a JSON manifest is:
13
13
@@ -26,75 +26,18 @@ The standard form of an assertion in a JSON manifest is:
-[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.
35
32
36
33
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.
37
34
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
-
44
35
| Assertion | Label | Description |
45
36
|-----------|-------|-------------|
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. |
48
37
|[Creative work](#creative-work-assertion)|`stds.schema-org.CreativeWork`| Indicates the asset is the product of creative effort. |
49
38
|[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. |
51
39
|[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).
"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`. |
98
41
99
42
### Creative work assertion
100
43
@@ -215,6 +158,63 @@ For example:
215
158
]
216
159
```
217
160
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).
"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
+
218
218
### Content bindings
219
219
220
220
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
244
244
]
245
245
```
246
246
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
-
270
247
## Actions
271
248
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:
273
250
274
251
```json
275
252
...
@@ -301,18 +278,17 @@ Each object in the `actions` array has the following standard properties.
301
278
302
279
### Action names
303
280
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.
307
282
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).
308
284
309
285
### Digital source type
310
286
311
287
Use the `digitalSourceType` property to specify how an asset was created or modified, for example "digital capture", "digitized from negative," or "trained algorithmic media."
312
288
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.
314
290
315
-
| Code | Description |
291
+
| Code | Description |`
316
292
|---|---|
317
293
| algorithmicallyEnhanced | Minor augmentation or correction by algorithm. |
318
294
| 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
321
297
| compositeSynthetic | Mix or composite of several elements, at least one of which is synthetic. |
322
298
| compositeWithTrainedAlgorithmicMedia | The compositing of trained algorithmic media with some other media, such as with inpainting or outpainting operations. |
323
299
| 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. |
325
301
| digitalCapture | The digital media is captured from a real-life source using a digital camera or digital recording device. |
326
302
| humanEdits | Augmentation, correction or enhancement by one or more humans using non-generative tools. Use instead of retired minorHumanEdits code. |
327
303
| 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
468
444
469
445
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.
470
446
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`.
Copy file name to clipboardExpand all lines: docs/manifest/ingredients.md
+12-2Lines changed: 12 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,10 +3,20 @@ id: ingredients
3
3
title: Ingredients
4
4
---
5
5
6
+
<divclass="review-comment">
7
+
8
+
`digitalSourceType` is now required on every ingredient, previously it was not.
9
+
10
+
</div>
11
+
6
12
## Overview
7
13
8
14
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_.
9
15
16
+
<divclass="review-comment">
17
+
This should now cover v2 ingredients, right?
18
+
</div>
19
+
10
20
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.
11
21
12
22
:::note
@@ -15,9 +25,9 @@ The C2PA Technical Specification describes _ingredient assertions_ but the CAI S
15
25
16
26
## Ingredient objects
17
27
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.
19
29
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.
21
31
22
32
Other important properties of the ingredient object include:
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
+
<divclass="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
0 commit comments