@bsv/dpp-profiles 0.3.0-beta.1 → 0.3.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/dist/applicability.js.map +1 -1
- package/dist/gs1-resolution.d.ts +1 -1
- package/dist/gs1-resolution.d.ts.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest-v2.js.map +1 -1
- package/dist/profile-changes.d.ts +39 -0
- package/dist/profile-changes.d.ts.map +1 -0
- package/dist/profile-changes.js +48 -0
- package/dist/profile-changes.js.map +1 -0
- package/dist/profile-data-review.d.ts +13 -0
- package/dist/profile-data-review.d.ts.map +1 -0
- package/dist/profile-data-review.js +60 -0
- package/dist/profile-data-review.js.map +1 -0
- package/dist/projections.d.ts +1 -1
- package/dist/projections.d.ts.map +1 -1
- package/frozen.json +12 -2
- package/generated/consumer/battery-v4.json +4953 -0
- package/generated/consumer/textile-v4.json +2142 -0
- package/generated/index.json +24 -0
- package/generated/mapping/battery@4.md +140 -0
- package/generated/mapping/textile@4.md +74 -0
- package/generated/payload-schema/battery@4.public.schema.json +1403 -0
- package/generated/payload-schema/battery@4.restricted.schema.json +1161 -0
- package/generated/payload-schema/textile@4.public.schema.json +1294 -0
- package/generated/payload-schema/textile@4.restricted.schema.json +78 -0
- package/manifests/battery@4.json +6828 -0
- package/manifests/textile@4.json +2888 -0
- package/package.json +8 -6
|
@@ -0,0 +1,1294 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:bsv:dpp:profile:textile@4:payload-public",
|
|
4
|
+
"title": "Textile passport (textile@4), public payload",
|
|
5
|
+
"description": "textile@4: the public payload carried on chain in field 10. JSON Schema validity is one check; obligation under a condition (needs-review), units, provenance and legal applicability are separate checks.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"notice": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"minLength": 1,
|
|
12
|
+
"description": "The sample marker a demonstration record carries first; never product data."
|
|
13
|
+
},
|
|
14
|
+
"profile": {
|
|
15
|
+
"const": "textile",
|
|
16
|
+
"description": "The profile identifier the payload declares."
|
|
17
|
+
},
|
|
18
|
+
"profile_version": {
|
|
19
|
+
"const": 4,
|
|
20
|
+
"description": "The profile version the payload declares; a reader decodes under it and never under a newer one."
|
|
21
|
+
},
|
|
22
|
+
"object_did": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"minLength": 1,
|
|
25
|
+
"description": "An optional physical-object DID carried in the public payload; carrying it does not implement physical binding."
|
|
26
|
+
},
|
|
27
|
+
"dataCarrier": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 1,
|
|
30
|
+
"description": "The data-carrier identifier (chip UID) the lookup service indexes beside the passport identifier."
|
|
31
|
+
},
|
|
32
|
+
"name": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"minLength": 1,
|
|
35
|
+
"title": "Product name",
|
|
36
|
+
"description": "required; ESPR framework Articles 4 and 9 and Annex III; textile-specific passport requirement anticipated"
|
|
37
|
+
},
|
|
38
|
+
"category": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"minLength": 1,
|
|
41
|
+
"title": "Kind of product",
|
|
42
|
+
"description": "required; ESPR framework Articles 4 and 9 and Annex III; textile-specific passport requirement anticipated"
|
|
43
|
+
},
|
|
44
|
+
"modelIdentifier": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"minLength": 1,
|
|
47
|
+
"maxLength": 64,
|
|
48
|
+
"title": "Model or style reference",
|
|
49
|
+
"description": "required; ESPR framework Articles 4 and 9 and Annex III; textile-specific passport requirement anticipated"
|
|
50
|
+
},
|
|
51
|
+
"batch": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"minLength": 1,
|
|
54
|
+
"maxLength": 64,
|
|
55
|
+
"title": "Batch",
|
|
56
|
+
"description": "required; ESPR framework Articles 4 and 9 and Annex III; textile-specific passport requirement anticipated"
|
|
57
|
+
},
|
|
58
|
+
"gtin": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"minLength": 1,
|
|
61
|
+
"pattern": "^\\d{8}$|^\\d{12,14}$",
|
|
62
|
+
"title": "Article number (GTIN)",
|
|
63
|
+
"description": "recommended; ESPR Annex III(c): commodity and trade item codes where they exist"
|
|
64
|
+
},
|
|
65
|
+
"manufacturer": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"minLength": 1,
|
|
68
|
+
"title": "Brand name",
|
|
69
|
+
"description": "required; Application field; Article 15 allocates labelling responsibilities; it does not establish this standalone passport brand-name field. Identify the responsible manufacturer separately."
|
|
70
|
+
},
|
|
71
|
+
"manufacturerContact": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"minLength": 1,
|
|
74
|
+
"title": "Brand contact",
|
|
75
|
+
"description": "required; ESPR framework Articles 4 and 9 and Annex III; textile-specific passport requirement anticipated"
|
|
76
|
+
},
|
|
77
|
+
"operatorId": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"title": "EU operator identifier",
|
|
80
|
+
"description": "recommended; ESPR Annex III(e)"
|
|
81
|
+
},
|
|
82
|
+
"manufacturingPlace": {
|
|
83
|
+
"type": "object",
|
|
84
|
+
"additionalProperties": false,
|
|
85
|
+
"properties": {
|
|
86
|
+
"city": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"minLength": 1
|
|
89
|
+
},
|
|
90
|
+
"country": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"pattern": "^[A-Z]{2}$"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"required": [
|
|
96
|
+
"city",
|
|
97
|
+
"country"
|
|
98
|
+
],
|
|
99
|
+
"title": "Where it was made",
|
|
100
|
+
"description": "required; Application field; Article 16 of Regulation (EU) 1007/2011 concerns presentation and language of fibre information; it does not establish this origin field. Other origin obligations require their own assessment."
|
|
101
|
+
},
|
|
102
|
+
"made": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
|
|
105
|
+
"title": "Made",
|
|
106
|
+
"description": "recommended; ESPR Annex I(a): a durability claim is meaningless without a start date"
|
|
107
|
+
},
|
|
108
|
+
"colour": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"minLength": 1,
|
|
111
|
+
"maxLength": 60,
|
|
112
|
+
"title": "Colour",
|
|
113
|
+
"description": "recommended; Nothing requires this. It identifies the item to the person holding it."
|
|
114
|
+
},
|
|
115
|
+
"size": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"minLength": 1,
|
|
118
|
+
"maxLength": 32,
|
|
119
|
+
"title": "Size",
|
|
120
|
+
"description": "recommended; Nothing requires this. It is what makes a passport match the garment in hand."
|
|
121
|
+
},
|
|
122
|
+
"weight": {
|
|
123
|
+
"type": "number",
|
|
124
|
+
"minimum": 1,
|
|
125
|
+
"maximum": 50000,
|
|
126
|
+
"multipleOf": 1,
|
|
127
|
+
"title": "Weight",
|
|
128
|
+
"description": "recommended; ESPR Annex I(l): resource use, and the basis of every per-mass figure below"
|
|
129
|
+
},
|
|
130
|
+
"fibres": {
|
|
131
|
+
"type": "array",
|
|
132
|
+
"items": {
|
|
133
|
+
"type": "object",
|
|
134
|
+
"additionalProperties": false,
|
|
135
|
+
"properties": {
|
|
136
|
+
"fibre": {
|
|
137
|
+
"type": "string",
|
|
138
|
+
"minLength": 1
|
|
139
|
+
},
|
|
140
|
+
"percent": {
|
|
141
|
+
"type": "number",
|
|
142
|
+
"minimum": 0,
|
|
143
|
+
"maximum": 100
|
|
144
|
+
},
|
|
145
|
+
"source": {
|
|
146
|
+
"enum": [
|
|
147
|
+
"preConsumer",
|
|
148
|
+
"postConsumer",
|
|
149
|
+
"virgin"
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"required": [
|
|
154
|
+
"fibre",
|
|
155
|
+
"percent"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"title": "Fibre composition",
|
|
159
|
+
"description": "required; Reg. (EU) 1007/2011 Art. 5, 9 and 14: binding today, by weight, in descending order"
|
|
160
|
+
},
|
|
161
|
+
"nonTextileParts": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"minLength": 1,
|
|
164
|
+
"maxLength": 200,
|
|
165
|
+
"title": "Non-textile parts of animal origin",
|
|
166
|
+
"description": "required; Reg. (EU) 1007/2011 Art. 12: mandatory where such parts are present; applicability needs-review"
|
|
167
|
+
},
|
|
168
|
+
"recycledContent": {
|
|
169
|
+
"type": "number",
|
|
170
|
+
"minimum": 0,
|
|
171
|
+
"maximum": 100,
|
|
172
|
+
"title": "Recycled content",
|
|
173
|
+
"description": "recommended; ESPR Annex I(g): recycled content is a named parameter; the threshold waits on the act"
|
|
174
|
+
},
|
|
175
|
+
"biobasedContent": {
|
|
176
|
+
"type": "number",
|
|
177
|
+
"minimum": 0,
|
|
178
|
+
"maximum": 100,
|
|
179
|
+
"title": "Bio-based content",
|
|
180
|
+
"description": "optional; Nothing requires this. Declared where a brand can substantiate it."
|
|
181
|
+
},
|
|
182
|
+
"trims": {
|
|
183
|
+
"type": "array",
|
|
184
|
+
"items": {
|
|
185
|
+
"type": "object",
|
|
186
|
+
"additionalProperties": false,
|
|
187
|
+
"properties": {
|
|
188
|
+
"part": {
|
|
189
|
+
"type": "string",
|
|
190
|
+
"minLength": 1
|
|
191
|
+
},
|
|
192
|
+
"material": {
|
|
193
|
+
"type": "string",
|
|
194
|
+
"minLength": 1
|
|
195
|
+
},
|
|
196
|
+
"origin": {
|
|
197
|
+
"type": "string",
|
|
198
|
+
"pattern": "^[A-Z]{2}$"
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"required": [
|
|
202
|
+
"part",
|
|
203
|
+
"material"
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
"title": "Trims and hardware",
|
|
207
|
+
"description": "recommended; ESPR Annex I(d) and (n): what separates for repair, and what separates for recycling"
|
|
208
|
+
},
|
|
209
|
+
"substancesOfConcern": {
|
|
210
|
+
"type": "array",
|
|
211
|
+
"items": {
|
|
212
|
+
"type": "object",
|
|
213
|
+
"additionalProperties": false,
|
|
214
|
+
"properties": {
|
|
215
|
+
"substance": {
|
|
216
|
+
"type": "string",
|
|
217
|
+
"minLength": 1
|
|
218
|
+
},
|
|
219
|
+
"casNumber": {
|
|
220
|
+
"type": "string",
|
|
221
|
+
"minLength": 1,
|
|
222
|
+
"pattern": "^\\d{2,7}-\\d{2}-\\d$"
|
|
223
|
+
},
|
|
224
|
+
"concentration": {
|
|
225
|
+
"type": "number",
|
|
226
|
+
"minimum": 0,
|
|
227
|
+
"maximum": 100
|
|
228
|
+
},
|
|
229
|
+
"location": {
|
|
230
|
+
"type": "string",
|
|
231
|
+
"minLength": 1
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
"required": [
|
|
235
|
+
"substance"
|
|
236
|
+
]
|
|
237
|
+
},
|
|
238
|
+
"title": "Substances of concern",
|
|
239
|
+
"description": "required; ESPR Art. 7(5): substances of concern must be traceable through the passport; applicability needs-review"
|
|
240
|
+
},
|
|
241
|
+
"substanceStatement": {
|
|
242
|
+
"type": "string",
|
|
243
|
+
"minLength": 1,
|
|
244
|
+
"maxLength": 400,
|
|
245
|
+
"title": "What that means for you",
|
|
246
|
+
"description": "recommended; ESPR Art. 9(2)(b): passport information shall be complete and comprehensible"
|
|
247
|
+
},
|
|
248
|
+
"microplasticRelease": {
|
|
249
|
+
"type": "string",
|
|
250
|
+
"title": "Microplastic release",
|
|
251
|
+
"description": "optional; ESPR Annex I(k); the method is not yet fixed"
|
|
252
|
+
},
|
|
253
|
+
"care": {
|
|
254
|
+
"type": "array",
|
|
255
|
+
"uniqueItems": true,
|
|
256
|
+
"items": {
|
|
257
|
+
"enum": [
|
|
258
|
+
"wash30",
|
|
259
|
+
"wash40",
|
|
260
|
+
"wash60",
|
|
261
|
+
"handWash",
|
|
262
|
+
"noWash",
|
|
263
|
+
"noBleach",
|
|
264
|
+
"tumbleLow",
|
|
265
|
+
"noTumble",
|
|
266
|
+
"ironLow",
|
|
267
|
+
"ironMedium",
|
|
268
|
+
"noIron",
|
|
269
|
+
"dryClean",
|
|
270
|
+
"noDryClean"
|
|
271
|
+
]
|
|
272
|
+
},
|
|
273
|
+
"title": "Care",
|
|
274
|
+
"description": "required; Application field; The cited consumer-information directive does not mandate this fixed care-code list. ISO care-symbol use and applicable labelling requirements need separate assessment."
|
|
275
|
+
},
|
|
276
|
+
"careNote": {
|
|
277
|
+
"type": "string",
|
|
278
|
+
"minLength": 1,
|
|
279
|
+
"maxLength": 400,
|
|
280
|
+
"title": "How to make it last",
|
|
281
|
+
"description": "recommended; ESPR Annex I(a): extending lifetime is the parameter; this is how"
|
|
282
|
+
},
|
|
283
|
+
"expectedLifetime": {
|
|
284
|
+
"type": "integer",
|
|
285
|
+
"minimum": 1,
|
|
286
|
+
"maximum": 100,
|
|
287
|
+
"title": "Expected lifetime",
|
|
288
|
+
"description": "recommended; Application field; No universal lifetime-in-years passport field is established by the cited consumer-information provision. Any voluntary durability claim still needs substantiation."
|
|
289
|
+
},
|
|
290
|
+
"washCycles": {
|
|
291
|
+
"type": "integer",
|
|
292
|
+
"minimum": 1,
|
|
293
|
+
"maximum": 1000,
|
|
294
|
+
"title": "Tested to",
|
|
295
|
+
"description": "recommended; ESPR Annex I(b) reliability, tested per ISO 6330 domestic washing procedures"
|
|
296
|
+
},
|
|
297
|
+
"colourFastness": {
|
|
298
|
+
"type": "number",
|
|
299
|
+
"minimum": 1,
|
|
300
|
+
"maximum": 5,
|
|
301
|
+
"multipleOf": 0.5,
|
|
302
|
+
"title": "Colour fastness",
|
|
303
|
+
"description": "recommended; ESPR Annex I(b), graded 1-5 per the ISO 105 series"
|
|
304
|
+
},
|
|
305
|
+
"dimensionalStability": {
|
|
306
|
+
"type": "number",
|
|
307
|
+
"minimum": -20,
|
|
308
|
+
"maximum": 20,
|
|
309
|
+
"multipleOf": 0.5,
|
|
310
|
+
"title": "Dimensional change after washing",
|
|
311
|
+
"description": "recommended; ESPR Annex I(b), measured per ISO 5077"
|
|
312
|
+
},
|
|
313
|
+
"pillingResistance": {
|
|
314
|
+
"type": "number",
|
|
315
|
+
"minimum": 1,
|
|
316
|
+
"maximum": 5,
|
|
317
|
+
"multipleOf": 0.5,
|
|
318
|
+
"title": "Pilling resistance",
|
|
319
|
+
"description": "recommended; ESPR Annex I(b), graded 1-5 per ISO 12945"
|
|
320
|
+
},
|
|
321
|
+
"guarantee": {
|
|
322
|
+
"type": "integer",
|
|
323
|
+
"minimum": 0,
|
|
324
|
+
"maximum": 600,
|
|
325
|
+
"title": "Guarantee",
|
|
326
|
+
"description": "recommended; Dir. (EU) 2024/825: a commercial guarantee of durability must state its term; applicability all"
|
|
327
|
+
},
|
|
328
|
+
"repairability": {
|
|
329
|
+
"type": "string",
|
|
330
|
+
"title": "Repairability",
|
|
331
|
+
"description": "recommended; ESPR Annex I(c) and Art. 7(2)(b)(iii)"
|
|
332
|
+
},
|
|
333
|
+
"spareParts": {
|
|
334
|
+
"type": "string",
|
|
335
|
+
"minLength": 1,
|
|
336
|
+
"maxLength": 300,
|
|
337
|
+
"title": "Spare parts",
|
|
338
|
+
"description": "recommended; ESPR Annex I(d): availability of spare parts is a named parameter"
|
|
339
|
+
},
|
|
340
|
+
"repairInstructions": {
|
|
341
|
+
"oneOf": [
|
|
342
|
+
{
|
|
343
|
+
"type": "string",
|
|
344
|
+
"format": "uri"
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"type": "object"
|
|
348
|
+
}
|
|
349
|
+
],
|
|
350
|
+
"title": "Repair instructions",
|
|
351
|
+
"description": "recommended; ESPR Annex I(e): access to repair information"
|
|
352
|
+
},
|
|
353
|
+
"repairServices": {
|
|
354
|
+
"type": "string",
|
|
355
|
+
"format": "uri",
|
|
356
|
+
"title": "Where to get it repaired",
|
|
357
|
+
"description": "recommended; Dir. (EU) 2024/825 recital 22: repair should be the visible option"
|
|
358
|
+
},
|
|
359
|
+
"carbonFootprint": {
|
|
360
|
+
"type": "number",
|
|
361
|
+
"minimum": 0,
|
|
362
|
+
"maximum": 10000,
|
|
363
|
+
"multipleOf": 0.01,
|
|
364
|
+
"title": "Carbon footprint",
|
|
365
|
+
"description": "recommended; ESPR Annex I(m), computed per the Apparel and Footwear PEFCR"
|
|
366
|
+
},
|
|
367
|
+
"carbonFootprintStudy": {
|
|
368
|
+
"oneOf": [
|
|
369
|
+
{
|
|
370
|
+
"type": "string",
|
|
371
|
+
"format": "uri"
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"type": "object"
|
|
375
|
+
}
|
|
376
|
+
],
|
|
377
|
+
"title": "The study behind the figure",
|
|
378
|
+
"description": "recommended; ESPR Art. 9(2)(b): a figure a reader cannot check is not information"
|
|
379
|
+
},
|
|
380
|
+
"footprintClass": {
|
|
381
|
+
"type": "string",
|
|
382
|
+
"title": "Environmental footprint class",
|
|
383
|
+
"description": "recommended; ESPR Art. 7(4)"
|
|
384
|
+
},
|
|
385
|
+
"waterUse": {
|
|
386
|
+
"type": "number",
|
|
387
|
+
"minimum": 0,
|
|
388
|
+
"maximum": 100000,
|
|
389
|
+
"multipleOf": 0.1,
|
|
390
|
+
"title": "Water use",
|
|
391
|
+
"description": "optional; ESPR Annex I(l): resource use. Declared where a brand has measured it."
|
|
392
|
+
},
|
|
393
|
+
"collection": {
|
|
394
|
+
"type": "string",
|
|
395
|
+
"minLength": 1,
|
|
396
|
+
"maxLength": 400,
|
|
397
|
+
"title": "Where to return it",
|
|
398
|
+
"description": "required; Application field; The separate-collection duty on Member States does not itself mandate this individual passport instruction field."
|
|
399
|
+
},
|
|
400
|
+
"recyclability": {
|
|
401
|
+
"type": "string",
|
|
402
|
+
"minLength": 1,
|
|
403
|
+
"maxLength": 400,
|
|
404
|
+
"title": "How it can be recycled",
|
|
405
|
+
"description": "recommended; ESPR Annex I(n): expected generation of waste materials"
|
|
406
|
+
},
|
|
407
|
+
"supplyChain": {
|
|
408
|
+
"type": "array",
|
|
409
|
+
"items": {
|
|
410
|
+
"type": "object",
|
|
411
|
+
"additionalProperties": false,
|
|
412
|
+
"properties": {
|
|
413
|
+
"stage": {
|
|
414
|
+
"enum": [
|
|
415
|
+
"fibre",
|
|
416
|
+
"spinning",
|
|
417
|
+
"weaving",
|
|
418
|
+
"dyeing",
|
|
419
|
+
"assembly"
|
|
420
|
+
]
|
|
421
|
+
},
|
|
422
|
+
"country": {
|
|
423
|
+
"type": "string",
|
|
424
|
+
"pattern": "^[A-Z]{2}$"
|
|
425
|
+
},
|
|
426
|
+
"facility": {
|
|
427
|
+
"type": "string",
|
|
428
|
+
"minLength": 1
|
|
429
|
+
}
|
|
430
|
+
},
|
|
431
|
+
"required": [
|
|
432
|
+
"stage",
|
|
433
|
+
"country"
|
|
434
|
+
]
|
|
435
|
+
},
|
|
436
|
+
"title": "Supply chain",
|
|
437
|
+
"description": "recommended; ESPR Annex III(f): unique facility identifiers, at the stages that have them"
|
|
438
|
+
},
|
|
439
|
+
"certifications": {
|
|
440
|
+
"type": "array",
|
|
441
|
+
"uniqueItems": true,
|
|
442
|
+
"items": {
|
|
443
|
+
"type": "string",
|
|
444
|
+
"minLength": 1
|
|
445
|
+
},
|
|
446
|
+
"title": "Independent certification",
|
|
447
|
+
"description": "recommended; Directive (EU) 2024/825 Article 1(4) and Annex point (1), inserting point 2a in Annex I to Directive 2005/29/EC; application under Article 4; applicability all"
|
|
448
|
+
},
|
|
449
|
+
"components": {
|
|
450
|
+
"type": "array",
|
|
451
|
+
"items": {
|
|
452
|
+
"type": "object",
|
|
453
|
+
"additionalProperties": false,
|
|
454
|
+
"properties": {
|
|
455
|
+
"component": {
|
|
456
|
+
"type": "string",
|
|
457
|
+
"minLength": 1
|
|
458
|
+
},
|
|
459
|
+
"role": {
|
|
460
|
+
"type": "string",
|
|
461
|
+
"minLength": 1
|
|
462
|
+
},
|
|
463
|
+
"massShare": {
|
|
464
|
+
"type": "number",
|
|
465
|
+
"minimum": 0,
|
|
466
|
+
"maximum": 100
|
|
467
|
+
}
|
|
468
|
+
},
|
|
469
|
+
"required": [
|
|
470
|
+
"component"
|
|
471
|
+
]
|
|
472
|
+
},
|
|
473
|
+
"title": "Components",
|
|
474
|
+
"description": "recommended; ESPR Annex III and Annex I: composition and evidence at the level of the component the delegated act may name"
|
|
475
|
+
},
|
|
476
|
+
"componentFibres": {
|
|
477
|
+
"type": "array",
|
|
478
|
+
"items": {
|
|
479
|
+
"type": "object",
|
|
480
|
+
"additionalProperties": false,
|
|
481
|
+
"properties": {
|
|
482
|
+
"component": {
|
|
483
|
+
"type": "string",
|
|
484
|
+
"minLength": 1
|
|
485
|
+
},
|
|
486
|
+
"fibre": {
|
|
487
|
+
"type": "string",
|
|
488
|
+
"minLength": 1
|
|
489
|
+
},
|
|
490
|
+
"percent": {
|
|
491
|
+
"type": "number",
|
|
492
|
+
"minimum": 0,
|
|
493
|
+
"maximum": 100
|
|
494
|
+
},
|
|
495
|
+
"source": {
|
|
496
|
+
"enum": [
|
|
497
|
+
"preConsumer",
|
|
498
|
+
"postConsumer",
|
|
499
|
+
"virgin"
|
|
500
|
+
]
|
|
501
|
+
}
|
|
502
|
+
},
|
|
503
|
+
"required": [
|
|
504
|
+
"component",
|
|
505
|
+
"fibre",
|
|
506
|
+
"percent"
|
|
507
|
+
]
|
|
508
|
+
},
|
|
509
|
+
"title": "Fibre composition per component",
|
|
510
|
+
"description": "required; Regulation (EU) 1007/2011 Article 11, read with Articles 5, 9, 14 and 16; applicability unresolved"
|
|
511
|
+
},
|
|
512
|
+
"recycledContentAssessment": {
|
|
513
|
+
"$ref": "#/$defs/measurement",
|
|
514
|
+
"title": "Recycled content, assessed",
|
|
515
|
+
"description": "optional; ESPR Annex I(g): recycled content with its method, basis and boundary"
|
|
516
|
+
},
|
|
517
|
+
"certificationEvidence": {
|
|
518
|
+
"type": "array",
|
|
519
|
+
"items": {
|
|
520
|
+
"$ref": "#/$defs/certification"
|
|
521
|
+
},
|
|
522
|
+
"title": "Certification evidence",
|
|
523
|
+
"description": "optional; Directive (EU) 2024/825 Article 1(4) and Annex point (1), inserting point 2a in Annex I to Directive 2005/29/EC; application under Article 4; applicability all"
|
|
524
|
+
},
|
|
525
|
+
"relatedDocuments": {
|
|
526
|
+
"type": "array",
|
|
527
|
+
"items": {
|
|
528
|
+
"$ref": "#/$defs/relatedDocument"
|
|
529
|
+
},
|
|
530
|
+
"title": "Related documents",
|
|
531
|
+
"description": "optional; none: documents a value points at, with their access policy and, where retained, their digest"
|
|
532
|
+
},
|
|
533
|
+
"microfibreReleaseAssessment": {
|
|
534
|
+
"$ref": "#/$defs/measurement",
|
|
535
|
+
"title": "Microfibre release, assessed",
|
|
536
|
+
"description": "optional; ESPR Annex I(k): microplastic and microfibre release, by a named method"
|
|
537
|
+
},
|
|
538
|
+
"repairabilityAssessment": {
|
|
539
|
+
"$ref": "#/$defs/measurement",
|
|
540
|
+
"title": "Repairability, assessed",
|
|
541
|
+
"description": "optional; ESPR Annex I(c) and Art. 7(2)(b)(iii): a repairability assessment under a named method"
|
|
542
|
+
},
|
|
543
|
+
"warrantyTerms": {
|
|
544
|
+
"$ref": "#/$defs/warrantyTerms",
|
|
545
|
+
"title": "Commercial guarantee terms",
|
|
546
|
+
"description": "optional; Dir. (EU) 2024/825: a commercial guarantee of durability states its term and what it counts from; applicability all"
|
|
547
|
+
},
|
|
548
|
+
"careNoteLocalised": {
|
|
549
|
+
"$ref": "#/$defs/localisedText",
|
|
550
|
+
"title": "Care note, by language",
|
|
551
|
+
"description": "optional; ESPR Annex I(a): care information as the maker supplied it in each language"
|
|
552
|
+
},
|
|
553
|
+
"substanceStatementLocalised": {
|
|
554
|
+
"$ref": "#/$defs/localisedText",
|
|
555
|
+
"title": "Substance statement, by language",
|
|
556
|
+
"description": "optional; ESPR Art. 9(2)(b): the substance statement in each language it was supplied in"
|
|
557
|
+
},
|
|
558
|
+
"inapplicableFields": {
|
|
559
|
+
"type": "array",
|
|
560
|
+
"items": {
|
|
561
|
+
"type": "object",
|
|
562
|
+
"additionalProperties": false,
|
|
563
|
+
"properties": {
|
|
564
|
+
"field": {
|
|
565
|
+
"type": "string",
|
|
566
|
+
"minLength": 1
|
|
567
|
+
},
|
|
568
|
+
"reason": {
|
|
569
|
+
"type": "string",
|
|
570
|
+
"minLength": 1
|
|
571
|
+
},
|
|
572
|
+
"declaredBy": {
|
|
573
|
+
"type": "string",
|
|
574
|
+
"minLength": 1
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
"required": [
|
|
578
|
+
"field",
|
|
579
|
+
"reason"
|
|
580
|
+
]
|
|
581
|
+
},
|
|
582
|
+
"title": "Declared inapplicable fields",
|
|
583
|
+
"description": "optional; none: the profile's own declaration by which a record says that a conditional field does not apply to it, with the reason"
|
|
584
|
+
}
|
|
585
|
+
},
|
|
586
|
+
"required": [
|
|
587
|
+
"care",
|
|
588
|
+
"collection",
|
|
589
|
+
"fibres",
|
|
590
|
+
"manufacturer",
|
|
591
|
+
"manufacturingPlace",
|
|
592
|
+
"profile",
|
|
593
|
+
"profile_version"
|
|
594
|
+
],
|
|
595
|
+
"$defs": {
|
|
596
|
+
"datePrecision": {
|
|
597
|
+
"enum": [
|
|
598
|
+
"day",
|
|
599
|
+
"month",
|
|
600
|
+
"year"
|
|
601
|
+
],
|
|
602
|
+
"description": "How precise a date is. A month-precision date is written YYYY-MM and never given a day; a year-precision date is written YYYY."
|
|
603
|
+
},
|
|
604
|
+
"hex64": {
|
|
605
|
+
"type": "string",
|
|
606
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
607
|
+
},
|
|
608
|
+
"dayDate": {
|
|
609
|
+
"type": "string",
|
|
610
|
+
"pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
|
|
611
|
+
},
|
|
612
|
+
"monthDate": {
|
|
613
|
+
"type": "string",
|
|
614
|
+
"pattern": "^\\d{4}-(0[1-9]|1[0-2])$"
|
|
615
|
+
},
|
|
616
|
+
"yearDate": {
|
|
617
|
+
"type": "string",
|
|
618
|
+
"pattern": "^\\d{4}$"
|
|
619
|
+
},
|
|
620
|
+
"dateOrDateTime": {
|
|
621
|
+
"type": "string",
|
|
622
|
+
"pattern": "^\\d{4}(-(0[1-9]|1[0-2])(-(0[1-9]|[12]\\d|3[01])(T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2}))?)?)?$",
|
|
623
|
+
"description": "A year, a month, a day or an instant; the precision the shape declares says which is meant."
|
|
624
|
+
},
|
|
625
|
+
"preciseDate": {
|
|
626
|
+
"type": "object",
|
|
627
|
+
"additionalProperties": false,
|
|
628
|
+
"required": [
|
|
629
|
+
"date",
|
|
630
|
+
"precision"
|
|
631
|
+
],
|
|
632
|
+
"properties": {
|
|
633
|
+
"date": {
|
|
634
|
+
"type": "string"
|
|
635
|
+
},
|
|
636
|
+
"precision": {
|
|
637
|
+
"$ref": "#/$defs/datePrecision"
|
|
638
|
+
}
|
|
639
|
+
},
|
|
640
|
+
"allOf": [
|
|
641
|
+
{
|
|
642
|
+
"if": {
|
|
643
|
+
"properties": {
|
|
644
|
+
"precision": {
|
|
645
|
+
"const": "day"
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
},
|
|
649
|
+
"then": {
|
|
650
|
+
"properties": {
|
|
651
|
+
"date": {
|
|
652
|
+
"$ref": "#/$defs/dayDate"
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
"if": {
|
|
659
|
+
"properties": {
|
|
660
|
+
"precision": {
|
|
661
|
+
"const": "month"
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
},
|
|
665
|
+
"then": {
|
|
666
|
+
"properties": {
|
|
667
|
+
"date": {
|
|
668
|
+
"$ref": "#/$defs/monthDate"
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
"if": {
|
|
675
|
+
"properties": {
|
|
676
|
+
"precision": {
|
|
677
|
+
"const": "year"
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
},
|
|
681
|
+
"then": {
|
|
682
|
+
"properties": {
|
|
683
|
+
"date": {
|
|
684
|
+
"$ref": "#/$defs/yearDate"
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
]
|
|
690
|
+
},
|
|
691
|
+
"subjectRef": {
|
|
692
|
+
"type": "object",
|
|
693
|
+
"additionalProperties": false,
|
|
694
|
+
"required": [
|
|
695
|
+
"id",
|
|
696
|
+
"granularity"
|
|
697
|
+
],
|
|
698
|
+
"properties": {
|
|
699
|
+
"id": {
|
|
700
|
+
"type": "string",
|
|
701
|
+
"minLength": 1,
|
|
702
|
+
"maxLength": 512
|
|
703
|
+
},
|
|
704
|
+
"granularity": {
|
|
705
|
+
"enum": [
|
|
706
|
+
"model",
|
|
707
|
+
"batch",
|
|
708
|
+
"item",
|
|
709
|
+
"component"
|
|
710
|
+
]
|
|
711
|
+
},
|
|
712
|
+
"componentRef": {
|
|
713
|
+
"type": "string",
|
|
714
|
+
"minLength": 1,
|
|
715
|
+
"maxLength": 512,
|
|
716
|
+
"description": "The component this evidence covers, when the granularity is component; a component need not have a token."
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
},
|
|
720
|
+
"sourceRef": {
|
|
721
|
+
"type": "object",
|
|
722
|
+
"additionalProperties": false,
|
|
723
|
+
"required": [
|
|
724
|
+
"kind",
|
|
725
|
+
"id"
|
|
726
|
+
],
|
|
727
|
+
"properties": {
|
|
728
|
+
"kind": {
|
|
729
|
+
"enum": [
|
|
730
|
+
"source-revision",
|
|
731
|
+
"credential",
|
|
732
|
+
"document"
|
|
733
|
+
]
|
|
734
|
+
},
|
|
735
|
+
"id": {
|
|
736
|
+
"type": "string",
|
|
737
|
+
"minLength": 1
|
|
738
|
+
},
|
|
739
|
+
"revisionId": {
|
|
740
|
+
"type": "string",
|
|
741
|
+
"minLength": 1
|
|
742
|
+
},
|
|
743
|
+
"digest": {
|
|
744
|
+
"$ref": "#/$defs/hex64"
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
"relevantTime": {
|
|
749
|
+
"type": "object",
|
|
750
|
+
"additionalProperties": false,
|
|
751
|
+
"required": [
|
|
752
|
+
"precision"
|
|
753
|
+
],
|
|
754
|
+
"properties": {
|
|
755
|
+
"at": {
|
|
756
|
+
"$ref": "#/$defs/dateOrDateTime"
|
|
757
|
+
},
|
|
758
|
+
"from": {
|
|
759
|
+
"$ref": "#/$defs/dateOrDateTime"
|
|
760
|
+
},
|
|
761
|
+
"until": {
|
|
762
|
+
"$ref": "#/$defs/dateOrDateTime"
|
|
763
|
+
},
|
|
764
|
+
"precision": {
|
|
765
|
+
"$ref": "#/$defs/datePrecision"
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
},
|
|
769
|
+
"claimEvidence": {
|
|
770
|
+
"type": "object",
|
|
771
|
+
"additionalProperties": false,
|
|
772
|
+
"required": [
|
|
773
|
+
"property",
|
|
774
|
+
"subject",
|
|
775
|
+
"source"
|
|
776
|
+
],
|
|
777
|
+
"properties": {
|
|
778
|
+
"property": {
|
|
779
|
+
"type": "string",
|
|
780
|
+
"pattern": "^/",
|
|
781
|
+
"description": "The JSON pointer of the field the evidence is about."
|
|
782
|
+
},
|
|
783
|
+
"subject": {
|
|
784
|
+
"$ref": "#/$defs/subjectRef"
|
|
785
|
+
},
|
|
786
|
+
"source": {
|
|
787
|
+
"$ref": "#/$defs/sourceRef"
|
|
788
|
+
},
|
|
789
|
+
"reporter": {
|
|
790
|
+
"type": "string",
|
|
791
|
+
"minLength": 1,
|
|
792
|
+
"description": "Who reported the fact, when that is not the issuer of the source."
|
|
793
|
+
},
|
|
794
|
+
"issuer": {
|
|
795
|
+
"type": "string",
|
|
796
|
+
"minLength": 1
|
|
797
|
+
},
|
|
798
|
+
"relevantTime": {
|
|
799
|
+
"$ref": "#/$defs/relevantTime"
|
|
800
|
+
},
|
|
801
|
+
"reportRef": {
|
|
802
|
+
"type": "string",
|
|
803
|
+
"minLength": 1,
|
|
804
|
+
"description": "A verification report the evidence was evaluated in."
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
},
|
|
808
|
+
"certification": {
|
|
809
|
+
"type": "object",
|
|
810
|
+
"additionalProperties": false,
|
|
811
|
+
"required": [
|
|
812
|
+
"scheme",
|
|
813
|
+
"certificateId",
|
|
814
|
+
"issuer",
|
|
815
|
+
"subject",
|
|
816
|
+
"verification"
|
|
817
|
+
],
|
|
818
|
+
"description": "A certificate as evidence. The scheme's homepage and the issuer's signature are inputs to a verification; only verification.status says what was established, and unknown is not a pass.",
|
|
819
|
+
"properties": {
|
|
820
|
+
"scheme": {
|
|
821
|
+
"type": "object",
|
|
822
|
+
"additionalProperties": false,
|
|
823
|
+
"required": [
|
|
824
|
+
"id",
|
|
825
|
+
"name"
|
|
826
|
+
],
|
|
827
|
+
"properties": {
|
|
828
|
+
"id": {
|
|
829
|
+
"type": "string",
|
|
830
|
+
"minLength": 1
|
|
831
|
+
},
|
|
832
|
+
"name": {
|
|
833
|
+
"type": "string",
|
|
834
|
+
"minLength": 1
|
|
835
|
+
},
|
|
836
|
+
"version": {
|
|
837
|
+
"type": "string"
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
},
|
|
841
|
+
"certificateId": {
|
|
842
|
+
"type": "string",
|
|
843
|
+
"minLength": 1
|
|
844
|
+
},
|
|
845
|
+
"issuer": {
|
|
846
|
+
"type": "string",
|
|
847
|
+
"minLength": 1,
|
|
848
|
+
"description": "The certification body or issuer as named on the certificate."
|
|
849
|
+
},
|
|
850
|
+
"subject": {
|
|
851
|
+
"$ref": "#/$defs/subjectRef"
|
|
852
|
+
},
|
|
853
|
+
"validFrom": {
|
|
854
|
+
"$ref": "#/$defs/dateOrDateTime"
|
|
855
|
+
},
|
|
856
|
+
"validUntil": {
|
|
857
|
+
"$ref": "#/$defs/dateOrDateTime"
|
|
858
|
+
},
|
|
859
|
+
"precision": {
|
|
860
|
+
"$ref": "#/$defs/datePrecision"
|
|
861
|
+
},
|
|
862
|
+
"documentRef": {
|
|
863
|
+
"$ref": "#/$defs/relatedDocument"
|
|
864
|
+
},
|
|
865
|
+
"credentialRef": {
|
|
866
|
+
"type": "object",
|
|
867
|
+
"additionalProperties": false,
|
|
868
|
+
"required": [
|
|
869
|
+
"id"
|
|
870
|
+
],
|
|
871
|
+
"properties": {
|
|
872
|
+
"id": {
|
|
873
|
+
"type": "string",
|
|
874
|
+
"minLength": 1
|
|
875
|
+
},
|
|
876
|
+
"digest": {
|
|
877
|
+
"$ref": "#/$defs/hex64"
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
},
|
|
881
|
+
"verification": {
|
|
882
|
+
"type": "object",
|
|
883
|
+
"additionalProperties": false,
|
|
884
|
+
"required": [
|
|
885
|
+
"status"
|
|
886
|
+
],
|
|
887
|
+
"properties": {
|
|
888
|
+
"status": {
|
|
889
|
+
"enum": [
|
|
890
|
+
"verified",
|
|
891
|
+
"failed",
|
|
892
|
+
"unknown",
|
|
893
|
+
"not-checked"
|
|
894
|
+
]
|
|
895
|
+
},
|
|
896
|
+
"checkedAt": {
|
|
897
|
+
"$ref": "#/$defs/dateOrDateTime"
|
|
898
|
+
},
|
|
899
|
+
"reportRef": {
|
|
900
|
+
"type": "string",
|
|
901
|
+
"minLength": 1
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
},
|
|
907
|
+
"quantity": {
|
|
908
|
+
"type": "object",
|
|
909
|
+
"additionalProperties": false,
|
|
910
|
+
"required": [
|
|
911
|
+
"value",
|
|
912
|
+
"unit"
|
|
913
|
+
],
|
|
914
|
+
"properties": {
|
|
915
|
+
"value": {
|
|
916
|
+
"type": "number"
|
|
917
|
+
},
|
|
918
|
+
"unit": {
|
|
919
|
+
"type": "string",
|
|
920
|
+
"minLength": 1
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
},
|
|
924
|
+
"measurement": {
|
|
925
|
+
"type": "object",
|
|
926
|
+
"additionalProperties": false,
|
|
927
|
+
"required": [
|
|
928
|
+
"property",
|
|
929
|
+
"value",
|
|
930
|
+
"unit",
|
|
931
|
+
"subject"
|
|
932
|
+
],
|
|
933
|
+
"description": "A measured or assessed value with the scope that makes it comparable: the unit, the basis (a fraction is not a percent), the functional unit or denominator, the method and its version, the boundary and conditions, when it was measured and for which subject. A value that is a string carries a basis, because a bare string cannot be compared.",
|
|
934
|
+
"properties": {
|
|
935
|
+
"property": {
|
|
936
|
+
"type": "string",
|
|
937
|
+
"minLength": 1
|
|
938
|
+
},
|
|
939
|
+
"value": {
|
|
940
|
+
"type": [
|
|
941
|
+
"number",
|
|
942
|
+
"string"
|
|
943
|
+
]
|
|
944
|
+
},
|
|
945
|
+
"unit": {
|
|
946
|
+
"type": "string",
|
|
947
|
+
"minLength": 1
|
|
948
|
+
},
|
|
949
|
+
"basis": {
|
|
950
|
+
"$ref": "#/$defs/measurementBasis"
|
|
951
|
+
},
|
|
952
|
+
"functionalUnit": {
|
|
953
|
+
"type": "string",
|
|
954
|
+
"minLength": 1
|
|
955
|
+
},
|
|
956
|
+
"denominator": {
|
|
957
|
+
"$ref": "#/$defs/quantity"
|
|
958
|
+
},
|
|
959
|
+
"method": {
|
|
960
|
+
"type": "object",
|
|
961
|
+
"additionalProperties": false,
|
|
962
|
+
"required": [
|
|
963
|
+
"id"
|
|
964
|
+
],
|
|
965
|
+
"properties": {
|
|
966
|
+
"id": {
|
|
967
|
+
"type": "string",
|
|
968
|
+
"minLength": 1
|
|
969
|
+
},
|
|
970
|
+
"version": {
|
|
971
|
+
"type": "string"
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
},
|
|
975
|
+
"boundary": {
|
|
976
|
+
"type": "string",
|
|
977
|
+
"minLength": 1
|
|
978
|
+
},
|
|
979
|
+
"conditions": {
|
|
980
|
+
"type": "string",
|
|
981
|
+
"minLength": 1
|
|
982
|
+
},
|
|
983
|
+
"measuredAt": {
|
|
984
|
+
"$ref": "#/$defs/preciseDate"
|
|
985
|
+
},
|
|
986
|
+
"effective": {
|
|
987
|
+
"type": "object",
|
|
988
|
+
"additionalProperties": false,
|
|
989
|
+
"properties": {
|
|
990
|
+
"from": {
|
|
991
|
+
"$ref": "#/$defs/dateOrDateTime"
|
|
992
|
+
},
|
|
993
|
+
"until": {
|
|
994
|
+
"$ref": "#/$defs/dateOrDateTime"
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
},
|
|
998
|
+
"subject": {
|
|
999
|
+
"$ref": "#/$defs/subjectRef"
|
|
1000
|
+
},
|
|
1001
|
+
"evidence": {
|
|
1002
|
+
"type": "array",
|
|
1003
|
+
"items": {
|
|
1004
|
+
"$ref": "#/$defs/claimEvidence"
|
|
1005
|
+
}
|
|
1006
|
+
},
|
|
1007
|
+
"conversion": {
|
|
1008
|
+
"type": "object",
|
|
1009
|
+
"additionalProperties": false,
|
|
1010
|
+
"required": [
|
|
1011
|
+
"fromUnit",
|
|
1012
|
+
"toUnit",
|
|
1013
|
+
"rule",
|
|
1014
|
+
"explicit"
|
|
1015
|
+
],
|
|
1016
|
+
"description": "Present only when the value was converted from its source unit under a stated rule; a converted value never loses its source unit.",
|
|
1017
|
+
"properties": {
|
|
1018
|
+
"fromUnit": {
|
|
1019
|
+
"type": "string",
|
|
1020
|
+
"minLength": 1
|
|
1021
|
+
},
|
|
1022
|
+
"toUnit": {
|
|
1023
|
+
"type": "string",
|
|
1024
|
+
"minLength": 1
|
|
1025
|
+
},
|
|
1026
|
+
"rule": {
|
|
1027
|
+
"type": "string",
|
|
1028
|
+
"minLength": 1
|
|
1029
|
+
},
|
|
1030
|
+
"explicit": {
|
|
1031
|
+
"const": true
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
},
|
|
1036
|
+
"allOf": [
|
|
1037
|
+
{
|
|
1038
|
+
"if": {
|
|
1039
|
+
"properties": {
|
|
1040
|
+
"value": {
|
|
1041
|
+
"type": "string"
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
},
|
|
1045
|
+
"then": {
|
|
1046
|
+
"properties": {
|
|
1047
|
+
"basis": {
|
|
1048
|
+
"$ref": "#/$defs/measurementBasis"
|
|
1049
|
+
}
|
|
1050
|
+
},
|
|
1051
|
+
"required": [
|
|
1052
|
+
"basis"
|
|
1053
|
+
]
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
]
|
|
1057
|
+
},
|
|
1058
|
+
"relatedDocument": {
|
|
1059
|
+
"type": "object",
|
|
1060
|
+
"additionalProperties": false,
|
|
1061
|
+
"required": [
|
|
1062
|
+
"ref",
|
|
1063
|
+
"purpose",
|
|
1064
|
+
"retained",
|
|
1065
|
+
"access"
|
|
1066
|
+
],
|
|
1067
|
+
"description": "A document a value points at. A URL is where the document was seen, not a commitment to its content; only retained bytes carry a digest.",
|
|
1068
|
+
"properties": {
|
|
1069
|
+
"ref": {
|
|
1070
|
+
"type": "string",
|
|
1071
|
+
"minLength": 1
|
|
1072
|
+
},
|
|
1073
|
+
"purpose": {
|
|
1074
|
+
"type": "string",
|
|
1075
|
+
"minLength": 1
|
|
1076
|
+
},
|
|
1077
|
+
"url": {
|
|
1078
|
+
"type": "string",
|
|
1079
|
+
"format": "uri"
|
|
1080
|
+
},
|
|
1081
|
+
"mediaType": {
|
|
1082
|
+
"type": "string",
|
|
1083
|
+
"minLength": 1
|
|
1084
|
+
},
|
|
1085
|
+
"language": {
|
|
1086
|
+
"type": "string",
|
|
1087
|
+
"pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
|
|
1088
|
+
},
|
|
1089
|
+
"revision": {
|
|
1090
|
+
"type": "string"
|
|
1091
|
+
},
|
|
1092
|
+
"date": {
|
|
1093
|
+
"$ref": "#/$defs/dateOrDateTime"
|
|
1094
|
+
},
|
|
1095
|
+
"precision": {
|
|
1096
|
+
"$ref": "#/$defs/datePrecision"
|
|
1097
|
+
},
|
|
1098
|
+
"digest": {
|
|
1099
|
+
"$ref": "#/$defs/hex64"
|
|
1100
|
+
},
|
|
1101
|
+
"byteLength": {
|
|
1102
|
+
"type": "integer",
|
|
1103
|
+
"minimum": 0
|
|
1104
|
+
},
|
|
1105
|
+
"retained": {
|
|
1106
|
+
"type": "boolean"
|
|
1107
|
+
},
|
|
1108
|
+
"access": {
|
|
1109
|
+
"enum": [
|
|
1110
|
+
"public",
|
|
1111
|
+
"owner",
|
|
1112
|
+
"legitimate",
|
|
1113
|
+
"authority"
|
|
1114
|
+
]
|
|
1115
|
+
}
|
|
1116
|
+
},
|
|
1117
|
+
"allOf": [
|
|
1118
|
+
{
|
|
1119
|
+
"if": {
|
|
1120
|
+
"properties": {
|
|
1121
|
+
"retained": {
|
|
1122
|
+
"const": true
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
},
|
|
1126
|
+
"then": {
|
|
1127
|
+
"properties": {
|
|
1128
|
+
"digest": {
|
|
1129
|
+
"$ref": "#/$defs/hex64"
|
|
1130
|
+
},
|
|
1131
|
+
"byteLength": {
|
|
1132
|
+
"type": "integer",
|
|
1133
|
+
"minimum": 0
|
|
1134
|
+
}
|
|
1135
|
+
},
|
|
1136
|
+
"required": [
|
|
1137
|
+
"digest",
|
|
1138
|
+
"byteLength"
|
|
1139
|
+
]
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
]
|
|
1143
|
+
},
|
|
1144
|
+
"localisedText": {
|
|
1145
|
+
"type": "object",
|
|
1146
|
+
"additionalProperties": false,
|
|
1147
|
+
"required": [
|
|
1148
|
+
"values"
|
|
1149
|
+
],
|
|
1150
|
+
"description": "Text in one or more languages as the source supplied it. A reader selects the exact tag, then the base language, then the declared default, and records which; it never rewrites a value as another language.",
|
|
1151
|
+
"properties": {
|
|
1152
|
+
"values": {
|
|
1153
|
+
"type": "array",
|
|
1154
|
+
"minItems": 1,
|
|
1155
|
+
"items": {
|
|
1156
|
+
"type": "object",
|
|
1157
|
+
"additionalProperties": false,
|
|
1158
|
+
"required": [
|
|
1159
|
+
"language",
|
|
1160
|
+
"text"
|
|
1161
|
+
],
|
|
1162
|
+
"properties": {
|
|
1163
|
+
"language": {
|
|
1164
|
+
"type": "string",
|
|
1165
|
+
"pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
|
|
1166
|
+
},
|
|
1167
|
+
"text": {
|
|
1168
|
+
"type": "string"
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
1172
|
+
},
|
|
1173
|
+
"returnedLanguage": {
|
|
1174
|
+
"type": "string",
|
|
1175
|
+
"pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
|
|
1176
|
+
},
|
|
1177
|
+
"selection": {
|
|
1178
|
+
"enum": [
|
|
1179
|
+
"exact",
|
|
1180
|
+
"base",
|
|
1181
|
+
"default"
|
|
1182
|
+
]
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
},
|
|
1186
|
+
"warrantyTerms": {
|
|
1187
|
+
"type": "object",
|
|
1188
|
+
"additionalProperties": false,
|
|
1189
|
+
"required": [
|
|
1190
|
+
"duration",
|
|
1191
|
+
"calendarRule"
|
|
1192
|
+
],
|
|
1193
|
+
"description": "A model's warranty terms: a duration and the calendar rule that says what the duration counts from. Terms alone give no expiry.",
|
|
1194
|
+
"properties": {
|
|
1195
|
+
"duration": {
|
|
1196
|
+
"type": "object",
|
|
1197
|
+
"additionalProperties": false,
|
|
1198
|
+
"required": [
|
|
1199
|
+
"value",
|
|
1200
|
+
"unit"
|
|
1201
|
+
],
|
|
1202
|
+
"properties": {
|
|
1203
|
+
"value": {
|
|
1204
|
+
"type": "integer",
|
|
1205
|
+
"minimum": 1
|
|
1206
|
+
},
|
|
1207
|
+
"unit": {
|
|
1208
|
+
"enum": [
|
|
1209
|
+
"months",
|
|
1210
|
+
"years"
|
|
1211
|
+
]
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
},
|
|
1215
|
+
"calendarRule": {
|
|
1216
|
+
"enum": [
|
|
1217
|
+
"purchase-date",
|
|
1218
|
+
"manufacture-date",
|
|
1219
|
+
"first-use"
|
|
1220
|
+
]
|
|
1221
|
+
},
|
|
1222
|
+
"conditions": {
|
|
1223
|
+
"type": "string"
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
},
|
|
1227
|
+
"warrantyExpiry": {
|
|
1228
|
+
"type": "object",
|
|
1229
|
+
"additionalProperties": false,
|
|
1230
|
+
"required": [
|
|
1231
|
+
"start",
|
|
1232
|
+
"terms",
|
|
1233
|
+
"derived"
|
|
1234
|
+
],
|
|
1235
|
+
"description": "An item's derived warranty expiry: the evidenced start, the terms applied and the derived date at the precision the start permits. A month-precision start yields a month, never an invented day.",
|
|
1236
|
+
"properties": {
|
|
1237
|
+
"start": {
|
|
1238
|
+
"type": "object",
|
|
1239
|
+
"additionalProperties": false,
|
|
1240
|
+
"required": [
|
|
1241
|
+
"date",
|
|
1242
|
+
"precision",
|
|
1243
|
+
"evidenceRef"
|
|
1244
|
+
],
|
|
1245
|
+
"properties": {
|
|
1246
|
+
"date": {
|
|
1247
|
+
"type": "string"
|
|
1248
|
+
},
|
|
1249
|
+
"precision": {
|
|
1250
|
+
"$ref": "#/$defs/datePrecision"
|
|
1251
|
+
},
|
|
1252
|
+
"evidenceRef": {
|
|
1253
|
+
"type": "string",
|
|
1254
|
+
"minLength": 1
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
},
|
|
1258
|
+
"terms": {
|
|
1259
|
+
"$ref": "#/$defs/warrantyTerms"
|
|
1260
|
+
},
|
|
1261
|
+
"derived": {
|
|
1262
|
+
"type": "object",
|
|
1263
|
+
"additionalProperties": false,
|
|
1264
|
+
"required": [
|
|
1265
|
+
"date",
|
|
1266
|
+
"precision",
|
|
1267
|
+
"rule"
|
|
1268
|
+
],
|
|
1269
|
+
"properties": {
|
|
1270
|
+
"date": {
|
|
1271
|
+
"type": "string"
|
|
1272
|
+
},
|
|
1273
|
+
"precision": {
|
|
1274
|
+
"$ref": "#/$defs/datePrecision"
|
|
1275
|
+
},
|
|
1276
|
+
"rule": {
|
|
1277
|
+
"type": "string",
|
|
1278
|
+
"minLength": 1
|
|
1279
|
+
}
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
},
|
|
1284
|
+
"measurementBasis": {
|
|
1285
|
+
"enum": [
|
|
1286
|
+
"fraction",
|
|
1287
|
+
"percent",
|
|
1288
|
+
"mass",
|
|
1289
|
+
"count",
|
|
1290
|
+
"per-functional-unit"
|
|
1291
|
+
]
|
|
1292
|
+
}
|
|
1293
|
+
}
|
|
1294
|
+
}
|