@bsv/dpp-profiles 0.3.0-beta.1

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.
Files changed (96) hide show
  1. package/LICENSE +58 -0
  2. package/README.md +64 -0
  3. package/dist/applicability.d.ts +96 -0
  4. package/dist/applicability.d.ts.map +1 -0
  5. package/dist/applicability.js +181 -0
  6. package/dist/applicability.js.map +1 -0
  7. package/dist/combinations.d.ts +30 -0
  8. package/dist/combinations.d.ts.map +1 -0
  9. package/dist/combinations.js +103 -0
  10. package/dist/combinations.js.map +1 -0
  11. package/dist/evidence-shapes.d.ts +198 -0
  12. package/dist/evidence-shapes.d.ts.map +1 -0
  13. package/dist/evidence-shapes.js +123 -0
  14. package/dist/evidence-shapes.js.map +1 -0
  15. package/dist/gs1-epc-binary.d.ts +81 -0
  16. package/dist/gs1-epc-binary.d.ts.map +1 -0
  17. package/dist/gs1-epc-binary.js +252 -0
  18. package/dist/gs1-epc-binary.js.map +1 -0
  19. package/dist/gs1-resolution.d.ts +392 -0
  20. package/dist/gs1-resolution.d.ts.map +1 -0
  21. package/dist/gs1-resolution.js +696 -0
  22. package/dist/gs1-resolution.js.map +1 -0
  23. package/dist/identifiers.d.ts +57 -0
  24. package/dist/identifiers.d.ts.map +1 -0
  25. package/dist/identifiers.js +117 -0
  26. package/dist/identifiers.js.map +1 -0
  27. package/dist/index.d.ts +235 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +124 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/manifest-v2.d.ts +87 -0
  32. package/dist/manifest-v2.d.ts.map +1 -0
  33. package/dist/manifest-v2.js +31 -0
  34. package/dist/manifest-v2.js.map +1 -0
  35. package/dist/mapping.d.ts +84 -0
  36. package/dist/mapping.d.ts.map +1 -0
  37. package/dist/mapping.js +88 -0
  38. package/dist/mapping.js.map +1 -0
  39. package/dist/projections.d.ts +233 -0
  40. package/dist/projections.d.ts.map +1 -0
  41. package/dist/projections.js +466 -0
  42. package/dist/projections.js.map +1 -0
  43. package/frozen.json +42 -0
  44. package/generated/consumer/battery-v2.json +2248 -0
  45. package/generated/consumer/battery-v3.json +4354 -0
  46. package/generated/consumer/general-v1.json +9 -0
  47. package/generated/consumer/general-v2.json +714 -0
  48. package/generated/consumer/textile-v1.json +101 -0
  49. package/generated/consumer/textile-v2.json +1033 -0
  50. package/generated/consumer/textile-v3.json +2011 -0
  51. package/generated/index.json +86 -0
  52. package/generated/mapping/battery@2.md +116 -0
  53. package/generated/mapping/battery@3.md +130 -0
  54. package/generated/mapping/general@2.md +50 -0
  55. package/generated/mapping/textile@2.md +61 -0
  56. package/generated/mapping/textile@3.md +73 -0
  57. package/generated/payload-schema/battery@2.public.schema.json +609 -0
  58. package/generated/payload-schema/battery@2.restricted.schema.json +377 -0
  59. package/generated/payload-schema/battery@3.public.schema.json +1364 -0
  60. package/generated/payload-schema/battery@3.restricted.schema.json +1097 -0
  61. package/generated/payload-schema/general@1.public.schema.json +37 -0
  62. package/generated/payload-schema/general@1.restricted.schema.json +9 -0
  63. package/generated/payload-schema/general@2.public.schema.json +352 -0
  64. package/generated/payload-schema/general@2.restricted.schema.json +52 -0
  65. package/generated/payload-schema/textile@1.public.schema.json +82 -0
  66. package/generated/payload-schema/textile@1.restricted.schema.json +22 -0
  67. package/generated/payload-schema/textile@2.public.schema.json +464 -0
  68. package/generated/payload-schema/textile@2.restricted.schema.json +78 -0
  69. package/generated/payload-schema/textile@3.public.schema.json +1299 -0
  70. package/generated/payload-schema/textile@3.restricted.schema.json +78 -0
  71. package/manifests/battery@2.json +4047 -0
  72. package/manifests/battery@3.json +6164 -0
  73. package/manifests/exchange/untp-0.7.0-jose@1.json +191 -0
  74. package/manifests/exchange/vc-di-ecdsa-rdfc-2019@1.json +74 -0
  75. package/manifests/exchange/vsc-draft-compat@0.1.0.json +64 -0
  76. package/manifests/general@1.json +148 -0
  77. package/manifests/general@2.json +1266 -0
  78. package/manifests/interoperability/epcis-json@1.json +69 -0
  79. package/manifests/interoperability/epcis-vsc@1.json +64 -0
  80. package/manifests/interoperability/gs1-digital-link@1.json +71 -0
  81. package/manifests/operator/federated-operators@1.json +54 -0
  82. package/manifests/operator/single-operator@1.json +52 -0
  83. package/manifests/textile@1.json +383 -0
  84. package/manifests/textile@2.json +1682 -0
  85. package/manifests/textile@3.json +2763 -0
  86. package/package.json +59 -0
  87. package/schemas/exchange-profile.schema.json +134 -0
  88. package/schemas/gs1/NOTICE.md +11 -0
  89. package/schemas/gs1/resolver-description-file-schema-1.2.0.json +124 -0
  90. package/schemas/gs1/resolver-linkset-context-1.2.1.jsonld +39 -0
  91. package/schemas/gs1/resolver-linkset-schema-1.2.1.json +96 -0
  92. package/schemas/interoperability-profile.schema.json +347 -0
  93. package/schemas/operator-profile.schema.json +108 -0
  94. package/schemas/product-identity.schema.json +45 -0
  95. package/schemas/profile-manifest-v2.schema.json +1087 -0
  96. package/schemas/profile-manifest.schema.json +291 -0
@@ -0,0 +1,1364 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:bsv:dpp:profile:battery@3:payload-public",
4
+ "title": "Battery passport (battery@3), public payload",
5
+ "description": "battery@3: 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": "battery",
16
+ "description": "The profile identifier the payload declares."
17
+ },
18
+ "profile_version": {
19
+ "const": 3,
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
+ "passportId": {
33
+ "type": "string",
34
+ "minLength": 1,
35
+ "title": "Passport reference",
36
+ "description": "required; Art. 77(3)"
37
+ },
38
+ "serial": {
39
+ "type": "string",
40
+ "minLength": 1,
41
+ "title": "Serial number",
42
+ "description": "required; Annex XIII (1a); Art. 38(6); Art. 77(3)"
43
+ },
44
+ "modelName": {
45
+ "type": "string",
46
+ "minLength": 1,
47
+ "maxLength": 200,
48
+ "title": "Model name",
49
+ "description": "required; Annex VI Part A(2)"
50
+ },
51
+ "operator": {
52
+ "type": "string",
53
+ "minLength": 1,
54
+ "title": "Responsible operator",
55
+ "description": "required; Art. 77(3)"
56
+ },
57
+ "manufacturer": {
58
+ "type": "string",
59
+ "minLength": 1,
60
+ "title": "Brand name",
61
+ "description": "required; Annex VI Part A(1); Art. 38(7)"
62
+ },
63
+ "manufacturerContact": {
64
+ "type": "string",
65
+ "minLength": 1,
66
+ "title": "Brand contact",
67
+ "description": "required; Annex VI Part A(1)"
68
+ },
69
+ "manufacturingPlace": {
70
+ "type": "object",
71
+ "additionalProperties": false,
72
+ "properties": {
73
+ "site": {
74
+ "type": "string",
75
+ "minLength": 1
76
+ },
77
+ "country": {
78
+ "type": "string",
79
+ "pattern": "^[A-Z]{2}$"
80
+ }
81
+ },
82
+ "required": [
83
+ "country"
84
+ ],
85
+ "title": "Place of manufacture",
86
+ "description": "required; Annex VI Part A(3)"
87
+ },
88
+ "manufacturingDate": {
89
+ "type": "string",
90
+ "format": "date",
91
+ "title": "Made",
92
+ "description": "required; Annex VI Part A(4)"
93
+ },
94
+ "warrantyUntil": {
95
+ "type": "string",
96
+ "format": "date",
97
+ "title": "Guarantee until",
98
+ "description": "required; Annex XIII (1m); applicability unresolved"
99
+ },
100
+ "category": {
101
+ "enum": [
102
+ "lmt",
103
+ "ev",
104
+ "industrial",
105
+ "stationary"
106
+ ],
107
+ "title": "Category",
108
+ "description": "required; Annex VI Part A(2); Art. 3"
109
+ },
110
+ "massKg": {
111
+ "type": "number",
112
+ "minimum": 0,
113
+ "title": "Mass",
114
+ "description": "required; Annex VI Part A(5)"
115
+ },
116
+ "separateCollectionSymbol": {
117
+ "type": "string",
118
+ "minLength": 1,
119
+ "title": "Separate collection symbol",
120
+ "description": "required; Art. 13(4); Annex VI Part B; Annex XIII (1q)"
121
+ },
122
+ "elementSymbols": {
123
+ "type": "string",
124
+ "minLength": 1,
125
+ "title": "Element symbols",
126
+ "description": "required; Art. 13(5); Art. 74(1e); Annex XIII (1s); applicability needs-review"
127
+ },
128
+ "carbonFootprintLabel": {
129
+ "type": "string",
130
+ "title": "Carbon footprint label",
131
+ "description": "required; Art. 7(2); Annex XIII (1c)"
132
+ },
133
+ "extinguishingAgent": {
134
+ "type": "array",
135
+ "uniqueItems": true,
136
+ "items": {
137
+ "type": "string",
138
+ "minLength": 1
139
+ },
140
+ "title": "Usable extinguishing agent",
141
+ "description": "required; Annex VI Part A(9)"
142
+ },
143
+ "labelMeaning": {
144
+ "type": "string",
145
+ "minLength": 1,
146
+ "title": "What the symbols mean",
147
+ "description": "required; Art. 74(1e); Annex XIII (1s)"
148
+ },
149
+ "declarationOfConformity": {
150
+ "oneOf": [
151
+ {
152
+ "type": "string",
153
+ "format": "uri"
154
+ },
155
+ {
156
+ "type": "object"
157
+ }
158
+ ],
159
+ "title": "Declaration of conformity",
160
+ "description": "required; Art. 18; Annex XIII (1r)"
161
+ },
162
+ "carbonFootprint": {
163
+ "type": "string",
164
+ "title": "Declared footprint",
165
+ "description": "required; Art. 7(1); Annex XIII"
166
+ },
167
+ "carbonRawMaterials": {
168
+ "type": "string",
169
+ "title": "Footprint: raw materials",
170
+ "description": "required; Art. 7(1)"
171
+ },
172
+ "carbonProduction": {
173
+ "type": "string",
174
+ "title": "Footprint: production",
175
+ "description": "required; Art. 7(1)"
176
+ },
177
+ "carbonDistribution": {
178
+ "type": "string",
179
+ "title": "Footprint: distribution",
180
+ "description": "required; Art. 7(1)"
181
+ },
182
+ "carbonEndOfLife": {
183
+ "type": "string",
184
+ "title": "Footprint: end of life",
185
+ "description": "required; Art. 7(1)"
186
+ },
187
+ "carbonClass": {
188
+ "type": "string",
189
+ "title": "Carbon class",
190
+ "description": "required; Art. 7(2); Annex XIII (1c)"
191
+ },
192
+ "carbonStudyUrl": {
193
+ "type": "string",
194
+ "title": "Footprint study",
195
+ "description": "required; Art. 7(1)"
196
+ },
197
+ "carbonGeneralInfo": {
198
+ "type": "string",
199
+ "title": "Battery and brand information",
200
+ "description": "required; Art. 7(1)"
201
+ },
202
+ "carbonAbsolute": {
203
+ "type": "string",
204
+ "title": "Total footprint",
205
+ "description": "recommended; none (spec recommendation)"
206
+ },
207
+ "dueDiligenceReport": {
208
+ "oneOf": [
209
+ {
210
+ "type": "string",
211
+ "format": "uri"
212
+ },
213
+ {
214
+ "type": "object"
215
+ }
216
+ ],
217
+ "title": "Due diligence report",
218
+ "description": "required; Annex XIII (1d); Art. 52(3)"
219
+ },
220
+ "dueDiligenceAssurances": {
221
+ "type": "array",
222
+ "items": {
223
+ "type": "object",
224
+ "additionalProperties": false,
225
+ "properties": {
226
+ "scheme": {
227
+ "type": "string",
228
+ "minLength": 1
229
+ },
230
+ "assurer": {
231
+ "type": "string",
232
+ "minLength": 1
233
+ },
234
+ "reference": {
235
+ "type": "string",
236
+ "minLength": 1
237
+ }
238
+ },
239
+ "required": [
240
+ "scheme",
241
+ "assurer"
242
+ ]
243
+ },
244
+ "title": "Third-party assurance",
245
+ "description": "recommended; Art. 53"
246
+ },
247
+ "supplyChainIndices": {
248
+ "type": "string",
249
+ "minLength": 1,
250
+ "title": "Supply chain indices",
251
+ "description": "recommended; none (spec recommendation)"
252
+ },
253
+ "chemistry": {
254
+ "type": "string",
255
+ "minLength": 1,
256
+ "title": "Chemistry",
257
+ "description": "required; Annex XIII (1b)"
258
+ },
259
+ "criticalRawMaterials": {
260
+ "type": "array",
261
+ "uniqueItems": true,
262
+ "items": {
263
+ "enum": [
264
+ "aluminium",
265
+ "antimony",
266
+ "arsenic",
267
+ "baryte",
268
+ "beryllium",
269
+ "bismuth",
270
+ "boron",
271
+ "cobalt",
272
+ "coking-coal",
273
+ "copper",
274
+ "feldspar",
275
+ "fluorspar",
276
+ "gallium",
277
+ "germanium",
278
+ "hafnium",
279
+ "helium",
280
+ "heavy-ree",
281
+ "light-ree",
282
+ "lithium",
283
+ "magnesium",
284
+ "manganese",
285
+ "natural-graphite",
286
+ "nickel",
287
+ "niobium",
288
+ "pgm",
289
+ "phosphate-rock",
290
+ "phosphorus",
291
+ "scandium",
292
+ "silicon-metal",
293
+ "strontium",
294
+ "tantalum",
295
+ "titanium-metal",
296
+ "tungsten",
297
+ "vanadium"
298
+ ]
299
+ },
300
+ "title": "Critical raw materials",
301
+ "description": "required; Annex XIII (1b); Annex VI Part A(10)"
302
+ },
303
+ "hazardousSubstances": {
304
+ "type": "array",
305
+ "items": {
306
+ "type": "object",
307
+ "additionalProperties": false,
308
+ "properties": {
309
+ "name": {
310
+ "type": "string",
311
+ "minLength": 1
312
+ },
313
+ "cas": {
314
+ "type": "string",
315
+ "minLength": 1,
316
+ "pattern": "^\\d{2,7}-\\d{2}-\\d$"
317
+ },
318
+ "concentration": {
319
+ "type": "number",
320
+ "minimum": 0,
321
+ "maximum": 100
322
+ }
323
+ },
324
+ "required": [
325
+ "name",
326
+ "cas"
327
+ ]
328
+ },
329
+ "title": "Hazardous substances",
330
+ "description": "required; Annex XIII (1b); Annex VI Part A(8)"
331
+ },
332
+ "substanceImpact": {
333
+ "type": "string",
334
+ "minLength": 1,
335
+ "maxLength": 2000,
336
+ "title": "Effects of those substances",
337
+ "description": "required; Art. 74(1f)"
338
+ },
339
+ "recycledShareTotal": {
340
+ "type": "string",
341
+ "title": "Recycled content",
342
+ "description": "required; Annex XIII (1e); Art. 8(1)"
343
+ },
344
+ "recycledNickelPre": {
345
+ "type": "string",
346
+ "title": "Nickel, pre-consumer",
347
+ "description": "required; Annex XIII (1e); Art. 8(1)"
348
+ },
349
+ "recycledCobaltPre": {
350
+ "type": "string",
351
+ "title": "Cobalt, pre-consumer",
352
+ "description": "required; Annex XIII (1e); Art. 8(1)"
353
+ },
354
+ "recycledLithiumPre": {
355
+ "type": "string",
356
+ "title": "Lithium, pre-consumer",
357
+ "description": "required; Annex XIII (1e); Art. 8(1)"
358
+ },
359
+ "recycledLeadPre": {
360
+ "type": "string",
361
+ "title": "Lead, pre-consumer",
362
+ "description": "required; Annex XIII (1e); Art. 8(1)"
363
+ },
364
+ "recycledNickelPost": {
365
+ "type": "string",
366
+ "title": "Nickel, post-consumer",
367
+ "description": "required; Annex XIII (1e); Art. 8(1)"
368
+ },
369
+ "recycledCobaltPost": {
370
+ "type": "string",
371
+ "title": "Cobalt, post-consumer",
372
+ "description": "required; Annex XIII (1e); Art. 8(1)"
373
+ },
374
+ "recycledLithiumPost": {
375
+ "type": "string",
376
+ "title": "Lithium, post-consumer",
377
+ "description": "required; Annex XIII (1e); Art. 8(1)"
378
+ },
379
+ "recycledLeadPost": {
380
+ "type": "string",
381
+ "title": "Lead, post-consumer",
382
+ "description": "required; Annex XIII (1e); Art. 8(1)"
383
+ },
384
+ "renewableShare": {
385
+ "type": "number",
386
+ "minimum": 0,
387
+ "maximum": 100,
388
+ "title": "Renewable content",
389
+ "description": "required; Annex XIII (1f)"
390
+ },
391
+ "endUserWastePrevention": {
392
+ "type": "string",
393
+ "minLength": 1,
394
+ "maxLength": 500,
395
+ "title": "Making it last",
396
+ "description": "required; Annex XIII (1s); Art. 74(1a)"
397
+ },
398
+ "endUserCollection": {
399
+ "type": "string",
400
+ "minLength": 1,
401
+ "maxLength": 500,
402
+ "title": "Where to return it",
403
+ "description": "required; Annex XIII (1s); Art. 74"
404
+ },
405
+ "endOfLifeTreatment": {
406
+ "type": "string",
407
+ "minLength": 1,
408
+ "maxLength": 500,
409
+ "title": "End of life",
410
+ "description": "required; Annex XIII (1s); Art. 74"
411
+ },
412
+ "ratedCapacityAh": {
413
+ "type": "number",
414
+ "minimum": 0,
415
+ "title": "Rated capacity",
416
+ "description": "required; Annex IV Part A(1); Annex VI Part A(6)"
417
+ },
418
+ "voltageMin": {
419
+ "type": "number",
420
+ "minimum": 0,
421
+ "title": "Minimum voltage",
422
+ "description": "required; Annex XIII (1h)"
423
+ },
424
+ "voltageMax": {
425
+ "type": "number",
426
+ "minimum": 0,
427
+ "title": "Maximum voltage",
428
+ "description": "required; Annex XIII (1h)"
429
+ },
430
+ "voltageNominal": {
431
+ "type": "number",
432
+ "minimum": 0,
433
+ "title": "Nominal voltage",
434
+ "description": "required; Annex XIII (1h)"
435
+ },
436
+ "powerOriginal": {
437
+ "type": "integer",
438
+ "minimum": 0,
439
+ "title": "Original power",
440
+ "description": "required; Annex XIII (1i)"
441
+ },
442
+ "powerMax": {
443
+ "type": "integer",
444
+ "minimum": 0,
445
+ "title": "Maximum permitted power",
446
+ "description": "required; Annex XIII (1i)"
447
+ },
448
+ "roundTripInitial": {
449
+ "type": "number",
450
+ "minimum": 0,
451
+ "maximum": 100,
452
+ "title": "Round trip efficiency, initial",
453
+ "description": "required; Annex XIII (1n); applicability any"
454
+ },
455
+ "roundTripAtHalfLife": {
456
+ "type": "number",
457
+ "minimum": 0,
458
+ "maximum": 100,
459
+ "title": "Round trip efficiency at half life",
460
+ "description": "required; Annex XIII (1n); applicability any"
461
+ },
462
+ "resistancePack": {
463
+ "type": "number",
464
+ "minimum": 0,
465
+ "title": "Internal resistance, pack",
466
+ "description": "required; Annex XIII (1o)"
467
+ },
468
+ "resistanceCell": {
469
+ "type": "number",
470
+ "minimum": 0,
471
+ "title": "Internal resistance, cell",
472
+ "description": "required; Annex XIII (1o)"
473
+ },
474
+ "resistanceModule": {
475
+ "type": "number",
476
+ "minimum": 0,
477
+ "title": "Internal resistance, module",
478
+ "description": "recommended; Annex XIII (1o)"
479
+ },
480
+ "expectedCycles": {
481
+ "type": "integer",
482
+ "minimum": 0,
483
+ "title": "Expected life in cycles",
484
+ "description": "required; Annex XIII (1j); applicability any"
485
+ },
486
+ "cycleLifeTest": {
487
+ "type": "string",
488
+ "minLength": 1,
489
+ "title": "Cycle life test used",
490
+ "description": "required; Annex XIII (1j); applicability any"
491
+ },
492
+ "cRate": {
493
+ "type": "number",
494
+ "minimum": 0,
495
+ "title": "C-rate of that test",
496
+ "description": "required; Annex XIII (1p); applicability any"
497
+ },
498
+ "exhaustionThreshold": {
499
+ "type": "number",
500
+ "minimum": 0,
501
+ "maximum": 100,
502
+ "title": "Exhaustion threshold",
503
+ "description": "required; Annex XIII (1k); applicability category-in"
504
+ },
505
+ "idleTempLower": {
506
+ "type": "integer",
507
+ "minimum": -60,
508
+ "maximum": 150,
509
+ "title": "Idle temperature, lowest",
510
+ "description": "required; Annex XIII (1l)"
511
+ },
512
+ "idleTempUpper": {
513
+ "type": "integer",
514
+ "minimum": -60,
515
+ "maximum": 150,
516
+ "title": "Idle temperature, highest",
517
+ "description": "required; Annex XIII (1l)"
518
+ },
519
+ "safety": {
520
+ "type": "string",
521
+ "minLength": 1,
522
+ "maxLength": 500,
523
+ "title": "Safety",
524
+ "description": "recommended; app addition; the spec puts safety measures at 6.6.1.5, restricted"
525
+ },
526
+ "manufacturerAddress": {
527
+ "type": "object",
528
+ "additionalProperties": false,
529
+ "properties": {
530
+ "street": {
531
+ "type": "string",
532
+ "minLength": 1
533
+ },
534
+ "postalCode": {
535
+ "type": "string",
536
+ "minLength": 1
537
+ },
538
+ "city": {
539
+ "type": "string",
540
+ "minLength": 1
541
+ },
542
+ "country": {
543
+ "type": "string",
544
+ "pattern": "^[A-Z]{2}$"
545
+ }
546
+ },
547
+ "required": [
548
+ "city",
549
+ "country"
550
+ ],
551
+ "title": "Manufacturer postal address",
552
+ "description": "required; Annex VI Part A(1): the postal address of the manufacturer, indicating a single contact point"
553
+ },
554
+ "manufacturerWeb": {
555
+ "type": "string",
556
+ "format": "uri",
557
+ "title": "Manufacturer web address",
558
+ "description": "optional; Annex VI Part A(1): web address, if available"
559
+ },
560
+ "manufacturerEmail": {
561
+ "type": "string",
562
+ "minLength": 1,
563
+ "maxLength": 254,
564
+ "title": "Manufacturer email address",
565
+ "description": "optional; Annex VI Part A(1): email address, if available"
566
+ },
567
+ "manufacturingMonth": {
568
+ "type": "string",
569
+ "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
570
+ "title": "Month of manufacture",
571
+ "description": "optional; Annex VI Part A(4): the date of manufacturing as month and year"
572
+ },
573
+ "warrantyTerms": {
574
+ "$ref": "#/$defs/warrantyTerms",
575
+ "title": "Commercial warranty terms",
576
+ "description": "optional; Annex XIII 1 (m): the period for which the commercial warranty for the calendar life applies; applicability unresolved"
577
+ },
578
+ "operatingTemperatureRange": {
579
+ "type": "object",
580
+ "additionalProperties": false,
581
+ "properties": {
582
+ "lower": {
583
+ "type": "integer"
584
+ },
585
+ "upper": {
586
+ "type": "integer"
587
+ }
588
+ },
589
+ "required": [
590
+ "lower",
591
+ "upper"
592
+ ],
593
+ "title": "Operating temperature range",
594
+ "description": "optional; Annex XIII 1 (h) and (i): the temperature range that qualifies the voltage and power values when relevant"
595
+ },
596
+ "instructionsForUse": {
597
+ "type": "string",
598
+ "title": "Instructions for use",
599
+ "description": "recommended; Annex XIII 1 (t): clear, understandable and readable instructions for use in a format that can be printed, downloaded and saved"
600
+ },
601
+ "inapplicableFields": {
602
+ "type": "array",
603
+ "items": {
604
+ "type": "object",
605
+ "additionalProperties": false,
606
+ "properties": {
607
+ "field": {
608
+ "type": "string",
609
+ "minLength": 1
610
+ },
611
+ "reason": {
612
+ "type": "string",
613
+ "minLength": 1
614
+ },
615
+ "declaredBy": {
616
+ "type": "string",
617
+ "minLength": 1
618
+ }
619
+ },
620
+ "required": [
621
+ "field",
622
+ "reason"
623
+ ]
624
+ },
625
+ "title": "Declared inapplicable fields",
626
+ "description": "optional; none: the profile's own declaration by which a record says that a conditional data point does not apply to it, with the reason"
627
+ }
628
+ },
629
+ "required": [
630
+ "category",
631
+ "chemistry",
632
+ "criticalRawMaterials",
633
+ "endOfLifeTreatment",
634
+ "endUserCollection",
635
+ "endUserWastePrevention",
636
+ "extinguishingAgent",
637
+ "hazardousSubstances",
638
+ "idleTempLower",
639
+ "idleTempUpper",
640
+ "labelMeaning",
641
+ "manufacturer",
642
+ "manufacturerAddress",
643
+ "manufacturerContact",
644
+ "manufacturingDate",
645
+ "manufacturingPlace",
646
+ "massKg",
647
+ "modelName",
648
+ "operator",
649
+ "passportId",
650
+ "powerMax",
651
+ "powerOriginal",
652
+ "profile",
653
+ "profile_version",
654
+ "ratedCapacityAh",
655
+ "renewableShare",
656
+ "resistanceCell",
657
+ "resistancePack",
658
+ "separateCollectionSymbol",
659
+ "serial",
660
+ "substanceImpact",
661
+ "voltageMax",
662
+ "voltageMin",
663
+ "voltageNominal"
664
+ ],
665
+ "$defs": {
666
+ "datePrecision": {
667
+ "enum": [
668
+ "day",
669
+ "month",
670
+ "year"
671
+ ],
672
+ "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."
673
+ },
674
+ "hex64": {
675
+ "type": "string",
676
+ "pattern": "^[0-9a-f]{64}$"
677
+ },
678
+ "dayDate": {
679
+ "type": "string",
680
+ "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
681
+ },
682
+ "monthDate": {
683
+ "type": "string",
684
+ "pattern": "^\\d{4}-(0[1-9]|1[0-2])$"
685
+ },
686
+ "yearDate": {
687
+ "type": "string",
688
+ "pattern": "^\\d{4}$"
689
+ },
690
+ "dateOrDateTime": {
691
+ "type": "string",
692
+ "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}))?)?)?$",
693
+ "description": "A year, a month, a day or an instant; the precision the shape declares says which is meant."
694
+ },
695
+ "preciseDate": {
696
+ "type": "object",
697
+ "additionalProperties": false,
698
+ "required": [
699
+ "date",
700
+ "precision"
701
+ ],
702
+ "properties": {
703
+ "date": {
704
+ "type": "string"
705
+ },
706
+ "precision": {
707
+ "$ref": "#/$defs/datePrecision"
708
+ }
709
+ },
710
+ "allOf": [
711
+ {
712
+ "if": {
713
+ "properties": {
714
+ "precision": {
715
+ "const": "day"
716
+ }
717
+ }
718
+ },
719
+ "then": {
720
+ "properties": {
721
+ "date": {
722
+ "$ref": "#/$defs/dayDate"
723
+ }
724
+ }
725
+ }
726
+ },
727
+ {
728
+ "if": {
729
+ "properties": {
730
+ "precision": {
731
+ "const": "month"
732
+ }
733
+ }
734
+ },
735
+ "then": {
736
+ "properties": {
737
+ "date": {
738
+ "$ref": "#/$defs/monthDate"
739
+ }
740
+ }
741
+ }
742
+ },
743
+ {
744
+ "if": {
745
+ "properties": {
746
+ "precision": {
747
+ "const": "year"
748
+ }
749
+ }
750
+ },
751
+ "then": {
752
+ "properties": {
753
+ "date": {
754
+ "$ref": "#/$defs/yearDate"
755
+ }
756
+ }
757
+ }
758
+ }
759
+ ]
760
+ },
761
+ "subjectRef": {
762
+ "type": "object",
763
+ "additionalProperties": false,
764
+ "required": [
765
+ "id",
766
+ "granularity"
767
+ ],
768
+ "properties": {
769
+ "id": {
770
+ "type": "string",
771
+ "minLength": 1,
772
+ "maxLength": 512
773
+ },
774
+ "granularity": {
775
+ "enum": [
776
+ "model",
777
+ "batch",
778
+ "item",
779
+ "component"
780
+ ]
781
+ },
782
+ "componentRef": {
783
+ "type": "string",
784
+ "minLength": 1,
785
+ "maxLength": 512,
786
+ "description": "The component this evidence covers, when the granularity is component; a component need not have a token."
787
+ }
788
+ }
789
+ },
790
+ "sourceRef": {
791
+ "type": "object",
792
+ "additionalProperties": false,
793
+ "required": [
794
+ "kind",
795
+ "id"
796
+ ],
797
+ "properties": {
798
+ "kind": {
799
+ "enum": [
800
+ "source-revision",
801
+ "credential",
802
+ "document"
803
+ ]
804
+ },
805
+ "id": {
806
+ "type": "string",
807
+ "minLength": 1
808
+ },
809
+ "revisionId": {
810
+ "type": "string",
811
+ "minLength": 1
812
+ },
813
+ "digest": {
814
+ "$ref": "#/$defs/hex64"
815
+ }
816
+ }
817
+ },
818
+ "relevantTime": {
819
+ "type": "object",
820
+ "additionalProperties": false,
821
+ "required": [
822
+ "precision"
823
+ ],
824
+ "properties": {
825
+ "at": {
826
+ "$ref": "#/$defs/dateOrDateTime"
827
+ },
828
+ "from": {
829
+ "$ref": "#/$defs/dateOrDateTime"
830
+ },
831
+ "until": {
832
+ "$ref": "#/$defs/dateOrDateTime"
833
+ },
834
+ "precision": {
835
+ "$ref": "#/$defs/datePrecision"
836
+ }
837
+ }
838
+ },
839
+ "claimEvidence": {
840
+ "type": "object",
841
+ "additionalProperties": false,
842
+ "required": [
843
+ "property",
844
+ "subject",
845
+ "source"
846
+ ],
847
+ "properties": {
848
+ "property": {
849
+ "type": "string",
850
+ "pattern": "^/",
851
+ "description": "The JSON pointer of the field the evidence is about."
852
+ },
853
+ "subject": {
854
+ "$ref": "#/$defs/subjectRef"
855
+ },
856
+ "source": {
857
+ "$ref": "#/$defs/sourceRef"
858
+ },
859
+ "reporter": {
860
+ "type": "string",
861
+ "minLength": 1,
862
+ "description": "Who reported the fact, when that is not the issuer of the source."
863
+ },
864
+ "issuer": {
865
+ "type": "string",
866
+ "minLength": 1
867
+ },
868
+ "relevantTime": {
869
+ "$ref": "#/$defs/relevantTime"
870
+ },
871
+ "reportRef": {
872
+ "type": "string",
873
+ "minLength": 1,
874
+ "description": "A verification report the evidence was evaluated in."
875
+ }
876
+ }
877
+ },
878
+ "certification": {
879
+ "type": "object",
880
+ "additionalProperties": false,
881
+ "required": [
882
+ "scheme",
883
+ "certificateId",
884
+ "issuer",
885
+ "subject",
886
+ "verification"
887
+ ],
888
+ "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.",
889
+ "properties": {
890
+ "scheme": {
891
+ "type": "object",
892
+ "additionalProperties": false,
893
+ "required": [
894
+ "id",
895
+ "name"
896
+ ],
897
+ "properties": {
898
+ "id": {
899
+ "type": "string",
900
+ "minLength": 1
901
+ },
902
+ "name": {
903
+ "type": "string",
904
+ "minLength": 1
905
+ },
906
+ "version": {
907
+ "type": "string"
908
+ }
909
+ }
910
+ },
911
+ "certificateId": {
912
+ "type": "string",
913
+ "minLength": 1
914
+ },
915
+ "issuer": {
916
+ "type": "string",
917
+ "minLength": 1,
918
+ "description": "The certification body or issuer as named on the certificate."
919
+ },
920
+ "subject": {
921
+ "$ref": "#/$defs/subjectRef"
922
+ },
923
+ "validFrom": {
924
+ "$ref": "#/$defs/dateOrDateTime"
925
+ },
926
+ "validUntil": {
927
+ "$ref": "#/$defs/dateOrDateTime"
928
+ },
929
+ "precision": {
930
+ "$ref": "#/$defs/datePrecision"
931
+ },
932
+ "documentRef": {
933
+ "$ref": "#/$defs/relatedDocument"
934
+ },
935
+ "credentialRef": {
936
+ "type": "object",
937
+ "additionalProperties": false,
938
+ "required": [
939
+ "id"
940
+ ],
941
+ "properties": {
942
+ "id": {
943
+ "type": "string",
944
+ "minLength": 1
945
+ },
946
+ "digest": {
947
+ "$ref": "#/$defs/hex64"
948
+ }
949
+ }
950
+ },
951
+ "verification": {
952
+ "type": "object",
953
+ "additionalProperties": false,
954
+ "required": [
955
+ "status"
956
+ ],
957
+ "properties": {
958
+ "status": {
959
+ "enum": [
960
+ "verified",
961
+ "failed",
962
+ "unknown",
963
+ "not-checked"
964
+ ]
965
+ },
966
+ "checkedAt": {
967
+ "$ref": "#/$defs/dateOrDateTime"
968
+ },
969
+ "reportRef": {
970
+ "type": "string",
971
+ "minLength": 1
972
+ }
973
+ }
974
+ }
975
+ }
976
+ },
977
+ "quantity": {
978
+ "type": "object",
979
+ "additionalProperties": false,
980
+ "required": [
981
+ "value",
982
+ "unit"
983
+ ],
984
+ "properties": {
985
+ "value": {
986
+ "type": "number"
987
+ },
988
+ "unit": {
989
+ "type": "string",
990
+ "minLength": 1
991
+ }
992
+ }
993
+ },
994
+ "measurement": {
995
+ "type": "object",
996
+ "additionalProperties": false,
997
+ "required": [
998
+ "property",
999
+ "value",
1000
+ "unit",
1001
+ "subject"
1002
+ ],
1003
+ "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.",
1004
+ "properties": {
1005
+ "property": {
1006
+ "type": "string",
1007
+ "minLength": 1
1008
+ },
1009
+ "value": {
1010
+ "type": [
1011
+ "number",
1012
+ "string"
1013
+ ]
1014
+ },
1015
+ "unit": {
1016
+ "type": "string",
1017
+ "minLength": 1
1018
+ },
1019
+ "basis": {
1020
+ "$ref": "#/$defs/measurementBasis"
1021
+ },
1022
+ "functionalUnit": {
1023
+ "type": "string",
1024
+ "minLength": 1
1025
+ },
1026
+ "denominator": {
1027
+ "$ref": "#/$defs/quantity"
1028
+ },
1029
+ "method": {
1030
+ "type": "object",
1031
+ "additionalProperties": false,
1032
+ "required": [
1033
+ "id"
1034
+ ],
1035
+ "properties": {
1036
+ "id": {
1037
+ "type": "string",
1038
+ "minLength": 1
1039
+ },
1040
+ "version": {
1041
+ "type": "string"
1042
+ }
1043
+ }
1044
+ },
1045
+ "boundary": {
1046
+ "type": "string",
1047
+ "minLength": 1
1048
+ },
1049
+ "conditions": {
1050
+ "type": "string",
1051
+ "minLength": 1
1052
+ },
1053
+ "measuredAt": {
1054
+ "$ref": "#/$defs/preciseDate"
1055
+ },
1056
+ "effective": {
1057
+ "type": "object",
1058
+ "additionalProperties": false,
1059
+ "properties": {
1060
+ "from": {
1061
+ "$ref": "#/$defs/dateOrDateTime"
1062
+ },
1063
+ "until": {
1064
+ "$ref": "#/$defs/dateOrDateTime"
1065
+ }
1066
+ }
1067
+ },
1068
+ "subject": {
1069
+ "$ref": "#/$defs/subjectRef"
1070
+ },
1071
+ "evidence": {
1072
+ "type": "array",
1073
+ "items": {
1074
+ "$ref": "#/$defs/claimEvidence"
1075
+ }
1076
+ },
1077
+ "conversion": {
1078
+ "type": "object",
1079
+ "additionalProperties": false,
1080
+ "required": [
1081
+ "fromUnit",
1082
+ "toUnit",
1083
+ "rule",
1084
+ "explicit"
1085
+ ],
1086
+ "description": "Present only when the value was converted from its source unit under a stated rule; a converted value never loses its source unit.",
1087
+ "properties": {
1088
+ "fromUnit": {
1089
+ "type": "string",
1090
+ "minLength": 1
1091
+ },
1092
+ "toUnit": {
1093
+ "type": "string",
1094
+ "minLength": 1
1095
+ },
1096
+ "rule": {
1097
+ "type": "string",
1098
+ "minLength": 1
1099
+ },
1100
+ "explicit": {
1101
+ "const": true
1102
+ }
1103
+ }
1104
+ }
1105
+ },
1106
+ "allOf": [
1107
+ {
1108
+ "if": {
1109
+ "properties": {
1110
+ "value": {
1111
+ "type": "string"
1112
+ }
1113
+ }
1114
+ },
1115
+ "then": {
1116
+ "properties": {
1117
+ "basis": {
1118
+ "$ref": "#/$defs/measurementBasis"
1119
+ }
1120
+ },
1121
+ "required": [
1122
+ "basis"
1123
+ ]
1124
+ }
1125
+ }
1126
+ ]
1127
+ },
1128
+ "relatedDocument": {
1129
+ "type": "object",
1130
+ "additionalProperties": false,
1131
+ "required": [
1132
+ "ref",
1133
+ "purpose",
1134
+ "retained",
1135
+ "access"
1136
+ ],
1137
+ "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.",
1138
+ "properties": {
1139
+ "ref": {
1140
+ "type": "string",
1141
+ "minLength": 1
1142
+ },
1143
+ "purpose": {
1144
+ "type": "string",
1145
+ "minLength": 1
1146
+ },
1147
+ "url": {
1148
+ "type": "string",
1149
+ "format": "uri"
1150
+ },
1151
+ "mediaType": {
1152
+ "type": "string",
1153
+ "minLength": 1
1154
+ },
1155
+ "language": {
1156
+ "type": "string",
1157
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
1158
+ },
1159
+ "revision": {
1160
+ "type": "string"
1161
+ },
1162
+ "date": {
1163
+ "$ref": "#/$defs/dateOrDateTime"
1164
+ },
1165
+ "precision": {
1166
+ "$ref": "#/$defs/datePrecision"
1167
+ },
1168
+ "digest": {
1169
+ "$ref": "#/$defs/hex64"
1170
+ },
1171
+ "byteLength": {
1172
+ "type": "integer",
1173
+ "minimum": 0
1174
+ },
1175
+ "retained": {
1176
+ "type": "boolean"
1177
+ },
1178
+ "access": {
1179
+ "enum": [
1180
+ "public",
1181
+ "owner",
1182
+ "legitimate",
1183
+ "authority"
1184
+ ]
1185
+ }
1186
+ },
1187
+ "allOf": [
1188
+ {
1189
+ "if": {
1190
+ "properties": {
1191
+ "retained": {
1192
+ "const": true
1193
+ }
1194
+ }
1195
+ },
1196
+ "then": {
1197
+ "properties": {
1198
+ "digest": {
1199
+ "$ref": "#/$defs/hex64"
1200
+ },
1201
+ "byteLength": {
1202
+ "type": "integer",
1203
+ "minimum": 0
1204
+ }
1205
+ },
1206
+ "required": [
1207
+ "digest",
1208
+ "byteLength"
1209
+ ]
1210
+ }
1211
+ }
1212
+ ]
1213
+ },
1214
+ "localisedText": {
1215
+ "type": "object",
1216
+ "additionalProperties": false,
1217
+ "required": [
1218
+ "values"
1219
+ ],
1220
+ "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.",
1221
+ "properties": {
1222
+ "values": {
1223
+ "type": "array",
1224
+ "minItems": 1,
1225
+ "items": {
1226
+ "type": "object",
1227
+ "additionalProperties": false,
1228
+ "required": [
1229
+ "language",
1230
+ "text"
1231
+ ],
1232
+ "properties": {
1233
+ "language": {
1234
+ "type": "string",
1235
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
1236
+ },
1237
+ "text": {
1238
+ "type": "string"
1239
+ }
1240
+ }
1241
+ }
1242
+ },
1243
+ "returnedLanguage": {
1244
+ "type": "string",
1245
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"
1246
+ },
1247
+ "selection": {
1248
+ "enum": [
1249
+ "exact",
1250
+ "base",
1251
+ "default"
1252
+ ]
1253
+ }
1254
+ }
1255
+ },
1256
+ "warrantyTerms": {
1257
+ "type": "object",
1258
+ "additionalProperties": false,
1259
+ "required": [
1260
+ "duration",
1261
+ "calendarRule"
1262
+ ],
1263
+ "description": "A model's warranty terms: a duration and the calendar rule that says what the duration counts from. Terms alone give no expiry.",
1264
+ "properties": {
1265
+ "duration": {
1266
+ "type": "object",
1267
+ "additionalProperties": false,
1268
+ "required": [
1269
+ "value",
1270
+ "unit"
1271
+ ],
1272
+ "properties": {
1273
+ "value": {
1274
+ "type": "integer",
1275
+ "minimum": 1
1276
+ },
1277
+ "unit": {
1278
+ "enum": [
1279
+ "months",
1280
+ "years"
1281
+ ]
1282
+ }
1283
+ }
1284
+ },
1285
+ "calendarRule": {
1286
+ "enum": [
1287
+ "purchase-date",
1288
+ "manufacture-date",
1289
+ "first-use"
1290
+ ]
1291
+ },
1292
+ "conditions": {
1293
+ "type": "string"
1294
+ }
1295
+ }
1296
+ },
1297
+ "warrantyExpiry": {
1298
+ "type": "object",
1299
+ "additionalProperties": false,
1300
+ "required": [
1301
+ "start",
1302
+ "terms",
1303
+ "derived"
1304
+ ],
1305
+ "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.",
1306
+ "properties": {
1307
+ "start": {
1308
+ "type": "object",
1309
+ "additionalProperties": false,
1310
+ "required": [
1311
+ "date",
1312
+ "precision",
1313
+ "evidenceRef"
1314
+ ],
1315
+ "properties": {
1316
+ "date": {
1317
+ "type": "string"
1318
+ },
1319
+ "precision": {
1320
+ "$ref": "#/$defs/datePrecision"
1321
+ },
1322
+ "evidenceRef": {
1323
+ "type": "string",
1324
+ "minLength": 1
1325
+ }
1326
+ }
1327
+ },
1328
+ "terms": {
1329
+ "$ref": "#/$defs/warrantyTerms"
1330
+ },
1331
+ "derived": {
1332
+ "type": "object",
1333
+ "additionalProperties": false,
1334
+ "required": [
1335
+ "date",
1336
+ "precision",
1337
+ "rule"
1338
+ ],
1339
+ "properties": {
1340
+ "date": {
1341
+ "type": "string"
1342
+ },
1343
+ "precision": {
1344
+ "$ref": "#/$defs/datePrecision"
1345
+ },
1346
+ "rule": {
1347
+ "type": "string",
1348
+ "minLength": 1
1349
+ }
1350
+ }
1351
+ }
1352
+ }
1353
+ },
1354
+ "measurementBasis": {
1355
+ "enum": [
1356
+ "fraction",
1357
+ "percent",
1358
+ "mass",
1359
+ "count",
1360
+ "per-functional-unit"
1361
+ ]
1362
+ }
1363
+ }
1364
+ }