@tracepass/dpp-schemas 1.16.4 → 1.18.0

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 CHANGED
@@ -285,6 +285,15 @@ record.
285
285
  **`aiHints`** lists the synonyms a supplier datasheet might use for the field. If you are
286
286
  extracting values from unstructured PDFs, these are the search terms that work.
287
287
 
288
+ **`entryProperties`** types the entries of an `array` field whose entries are objects:
289
+ each member has a `type` (`string` | `number` | `boolean`), and optionally `required`,
290
+ `enum`, `format` (`date`, `iso3166-alpha2`, `cas-number`) and a `description`. Battery
291
+ composition, for example, is a list of `{substanceName, casNumber, massPercent}`, with
292
+ `massPercent` as a share of the battery's total mass. Audit check [22] requires
293
+ `aiHints.expectedFormat` to name every declared member, and to use no member that is
294
+ not declared, so the extraction hint and the declared shape cannot drift apart. Every object list in
295
+ every category declares one.
296
+
288
297
  ## No build step
289
298
 
290
299
  There is nothing to compile and nothing to install. Read the JSON.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tracepass/dpp-schemas",
3
- "version": "1.16.4",
3
+ "version": "1.18.0",
4
4
  "description": "Machine-readable field specifications for EU Digital Product Passports (ESPR) — 13 product categories, 991 fields, each traced to the article of EU law that mandates it. Pure JSON, no dependencies.",
5
5
  "keywords": [
6
6
  "digital-product-passport",
package/schema.json CHANGED
@@ -250,6 +250,48 @@
250
250
  "file_reference"
251
251
  ]
252
252
  },
253
+ "entryProperties": {
254
+ "type": "object",
255
+ "description": "For an `array` field whose entries are objects: the members of one entry. Lets consumers type the list (the VC profile emits `items` from it) and is checked against `aiHints.expectedFormat`, which must name every member (audit [22]). Member names are camelCase.",
256
+ "minProperties": 1,
257
+ "additionalProperties": {
258
+ "type": "object",
259
+ "required": [
260
+ "type"
261
+ ],
262
+ "additionalProperties": false,
263
+ "properties": {
264
+ "type": {
265
+ "enum": [
266
+ "string",
267
+ "number",
268
+ "boolean"
269
+ ]
270
+ },
271
+ "description": {
272
+ "type": "string"
273
+ },
274
+ "required": {
275
+ "type": "boolean",
276
+ "description": "The entry is incomplete without this member."
277
+ },
278
+ "enum": {
279
+ "type": "array",
280
+ "items": {
281
+ "type": "string"
282
+ },
283
+ "minItems": 1
284
+ },
285
+ "format": {
286
+ "enum": [
287
+ "date",
288
+ "iso3166-alpha2",
289
+ "cas-number"
290
+ ]
291
+ }
292
+ }
293
+ }
294
+ },
253
295
  "unit": {
254
296
  "description": "Unit of measure. Must be a canonical key from units.json — the historical free-text spellings are no longer permitted. `null` when the field has no unit.",
255
297
  "oneOf": [
@@ -4602,6 +4602,21 @@
4602
4602
  "el": "Κατάλογος ενεργών υλικών καθόδου με όνομα και ποσοστό κατά βάρος"
4603
4603
  },
4604
4604
  "dataType": "array",
4605
+ "entryProperties": {
4606
+ "substanceName": {
4607
+ "type": "string",
4608
+ "required": true
4609
+ },
4610
+ "casNumber": {
4611
+ "type": "string",
4612
+ "format": "cas-number"
4613
+ },
4614
+ "massPercent": {
4615
+ "type": "number",
4616
+ "description": "% of the battery's total mass",
4617
+ "required": true
4618
+ }
4619
+ },
4605
4620
  "unit": null,
4606
4621
  "translatable": false,
4607
4622
  "defaultValue": null,
@@ -4671,7 +4686,7 @@
4671
4686
  "cathode composition",
4672
4687
  "CAM"
4673
4688
  ],
4674
- "expectedFormat": "Array of objects: [{name: 'Lithium Nickel Manganese Cobalt Oxide', weightPercent: 85.0}]",
4689
+ "expectedFormat": "Array of objects: [{substanceName: 'Lithium Nickel Cobalt Aluminum Oxide', casNumber: '193214-24-3', massPercent: 32.5}]. Each item: substanceName (string), casNumber (string, when known), massPercent (number, % of the battery's total mass).",
4675
4690
  "extractionPriority": 7
4676
4691
  }
4677
4692
  },
@@ -4730,6 +4745,21 @@
4730
4745
  "el": "Κατάλογος ενεργών υλικών ανόδου με όνομα και ποσοστό κατά βάρος"
4731
4746
  },
4732
4747
  "dataType": "array",
4748
+ "entryProperties": {
4749
+ "substanceName": {
4750
+ "type": "string",
4751
+ "required": true
4752
+ },
4753
+ "casNumber": {
4754
+ "type": "string",
4755
+ "format": "cas-number"
4756
+ },
4757
+ "massPercent": {
4758
+ "type": "number",
4759
+ "description": "% of the battery's total mass",
4760
+ "required": true
4761
+ }
4762
+ },
4733
4763
  "unit": null,
4734
4764
  "translatable": false,
4735
4765
  "defaultValue": null,
@@ -4799,7 +4829,7 @@
4799
4829
  "anode composition",
4800
4830
  "AAM"
4801
4831
  ],
4802
- "expectedFormat": "Array of objects: [{name: 'Graphite', weightPercent: 95.0}]",
4832
+ "expectedFormat": "Array of objects: [{substanceName: 'Graphite', casNumber: '7782-42-5', massPercent: 18.2}]. Each item: substanceName (string), casNumber (string, when known), massPercent (number, % of the battery's total mass).",
4803
4833
  "extractionPriority": 7
4804
4834
  }
4805
4835
  },
@@ -4858,6 +4888,21 @@
4858
4888
  "el": "Κατάλογος συστατικών ηλεκτρολύτη με όνομα και ποσοστό κατά βάρος"
4859
4889
  },
4860
4890
  "dataType": "array",
4891
+ "entryProperties": {
4892
+ "substanceName": {
4893
+ "type": "string",
4894
+ "required": true
4895
+ },
4896
+ "casNumber": {
4897
+ "type": "string",
4898
+ "format": "cas-number"
4899
+ },
4900
+ "massPercent": {
4901
+ "type": "number",
4902
+ "description": "% of the battery's total mass",
4903
+ "required": true
4904
+ }
4905
+ },
4861
4906
  "unit": null,
4862
4907
  "translatable": false,
4863
4908
  "defaultValue": null,
@@ -4927,7 +4972,7 @@
4927
4972
  "electrolyte components",
4928
4973
  "solvent composition"
4929
4974
  ],
4930
- "expectedFormat": "Array of objects: [{name: 'LiPF6', weightPercent: 12.0}]",
4975
+ "expectedFormat": "Array of objects: [{substanceName: 'Lithium hexafluorophosphate (LiPF6)', casNumber: '21324-40-3', massPercent: 1.5}]. Each item: substanceName (string), casNumber (string, when known), massPercent (number, % of the battery's total mass).",
4931
4976
  "extractionPriority": 6
4932
4977
  }
4933
4978
  },
@@ -4986,6 +5031,21 @@
4986
5031
  "el": "Κρίσιμες πρώτες ύλες που περιέχονται στην μπαταρία σε συγκέντρωση άνω του 0,1 % κατά βάρος (παράρτημα VI μέρος Α σημείο 10, μέσω του παραρτήματος XIII σημείο 1 στοιχείο α)). Αναφέρετε την καθεμία με την ονομασία και το ποσοστό της."
4987
5032
  },
4988
5033
  "dataType": "array",
5034
+ "entryProperties": {
5035
+ "material": {
5036
+ "type": "string",
5037
+ "required": true
5038
+ },
5039
+ "massPercent": {
5040
+ "type": "number",
5041
+ "description": "% of the battery's total mass",
5042
+ "required": true
5043
+ },
5044
+ "countryOfOrigin": {
5045
+ "type": "string",
5046
+ "format": "iso3166-alpha2"
5047
+ }
5048
+ },
4989
5049
  "unit": null,
4990
5050
  "translatable": false,
4991
5051
  "defaultValue": null,
@@ -5066,7 +5126,7 @@
5066
5126
  "graphite",
5067
5127
  "manganese"
5068
5128
  ],
5069
- "expectedFormat": "Array of objects: [{crmName: 'Cobalt', weightPercent: 12.5, countryOfOrigin: 'CD'}]. Each item has crmName (string), weightPercent (number), countryOfOrigin (ISO 3166 string, restricted access)",
5129
+ "expectedFormat": "Array of objects: [{material: 'Cobalt', massPercent: 4.8, countryOfOrigin: 'CD'}]. Each item: material (string), massPercent (number, % of the battery's total mass), countryOfOrigin (ISO 3166 alpha-2, restricted access).",
5070
5130
  "extractionPriority": 8
5071
5131
  }
5072
5132
  },
@@ -5125,6 +5185,29 @@
5125
5185
  "el": "Επικίνδυνες ουσίες που περιέχονται στην μπαταρία, εκτός από υδράργυρο, κάδμιο ή μόλυβδο: ουσίες που ταξινομούνται ως επικίνδυνες σύμφωνα με το άρθρο 3 του κανονισμού (ΕΚ) αριθ. 1272/2008 (παράρτημα VI μέρος Α σημείο 8, μέσω του παραρτήματος XIII σημείο 1 στοιχείο α)). Αναφέρετε την καθεμία με την ονομασία της, τον αριθμό CAS της, εφόσον υπάρχει, και τη θέση της στην μπαταρία."
5126
5186
  },
5127
5187
  "dataType": "array",
5188
+ "entryProperties": {
5189
+ "substanceName": {
5190
+ "type": "string",
5191
+ "required": true
5192
+ },
5193
+ "casNumber": {
5194
+ "type": "string",
5195
+ "format": "cas-number"
5196
+ },
5197
+ "concentrationPercent": {
5198
+ "type": "number"
5199
+ },
5200
+ "hazardClassification": {
5201
+ "type": "string"
5202
+ },
5203
+ "precautionaryStatements": {
5204
+ "type": "string",
5205
+ "description": "CLP P-statements from the SDS, e.g. P201; P280"
5206
+ },
5207
+ "locationInBattery": {
5208
+ "type": "string"
5209
+ }
5210
+ },
5128
5211
  "unit": null,
5129
5212
  "translatable": false,
5130
5213
  "defaultValue": null,
@@ -5202,7 +5285,7 @@
5202
5285
  "REACH substances",
5203
5286
  "substances of concern"
5204
5287
  ],
5205
- "expectedFormat": "Array of objects: [{substanceName: 'Lead', casNumber: '7439-92-1', concentrationPercent: 0.15, hazardClassification: 'Repr. 1A', locationInBattery: 'Solder joints'}]",
5288
+ "expectedFormat": "Array of objects: [{substanceName: 'Lead', casNumber: '7439-92-1', concentrationPercent: 0.15, hazardClassification: 'Repr. 1A', precautionaryStatements: 'P201; P280', locationInBattery: 'Solder joints'}]. precautionaryStatements are the CLP P-statements from the SDS.",
5206
5289
  "extractionPriority": 7
5207
5290
  }
5208
5291
  },
@@ -12375,6 +12458,26 @@
12375
12458
  "el": "Αρχείο αρνητικών συμβάντων όπως βαθιά εκφόρτιση, ακραίες θερμοκρασίες ή ατυχήματα"
12376
12459
  },
12377
12460
  "dataType": "array",
12461
+ "entryProperties": {
12462
+ "date": {
12463
+ "type": "string",
12464
+ "format": "date",
12465
+ "required": true
12466
+ },
12467
+ "type": {
12468
+ "type": "string",
12469
+ "required": true,
12470
+ "enum": [
12471
+ "deep_discharge",
12472
+ "extreme_temp",
12473
+ "accident",
12474
+ "other"
12475
+ ]
12476
+ },
12477
+ "description": {
12478
+ "type": "string"
12479
+ }
12480
+ },
12378
12481
  "unit": null,
12379
12482
  "translatable": false,
12380
12483
  "defaultValue": null,
@@ -13577,6 +13680,16 @@
13577
13680
  "el": "Αριθμοί ανταλλακτικών για τα κατασκευαστικά στοιχεία που υπόκεινται σε αντικατάσταση, σύμφωνα με το παράρτημα XIII σημείο 2 στοιχείο β. Δομημένος κατάλογος με την ονομασία του κατασκευαστικού στοιχείου και τον αριθμό ανταλλακτικού."
13578
13681
  },
13579
13682
  "dataType": "array",
13683
+ "entryProperties": {
13684
+ "componentName": {
13685
+ "type": "string",
13686
+ "required": true
13687
+ },
13688
+ "partNumber": {
13689
+ "type": "string",
13690
+ "required": true
13691
+ }
13692
+ },
13580
13693
  "unit": null,
13581
13694
  "translatable": false,
13582
13695
  "defaultValue": null,
@@ -4169,6 +4169,23 @@
4169
4169
  "sv": "Ämnen som inger betänkligheter enligt REACH/SCIP med CAS-nummer"
4170
4170
  },
4171
4171
  "dataType": "array",
4172
+ "entryProperties": {
4173
+ "substanceName": {
4174
+ "type": "string",
4175
+ "required": true
4176
+ },
4177
+ "casNumber": {
4178
+ "type": "string",
4179
+ "format": "cas-number"
4180
+ },
4181
+ "concentrationPercent": {
4182
+ "type": "number",
4183
+ "description": "% by mass of the article or mixture"
4184
+ },
4185
+ "locationInProduct": {
4186
+ "type": "string"
4187
+ }
4188
+ },
4172
4189
  "unit": null,
4173
4190
  "translatable": false,
4174
4191
  "defaultValue": null,
@@ -4221,7 +4238,7 @@
4221
4238
  "hazardous substances",
4222
4239
  "candidate list substances"
4223
4240
  ],
4224
- "expectedFormat": "Array of objects with substanceName (string), casNumber (string), concentration (%), location (string)",
4241
+ "expectedFormat": "Array of objects: [{substanceName: 'Lead', casNumber: '7439-92-1', concentrationPercent: 0.15, locationInProduct: 'Flashing'}]. Each item: substanceName (string, required); casNumber (string); concentrationPercent (number, % by mass of the article or mixture); locationInProduct (string).",
4225
4242
  "extractionPriority": 8
4226
4243
  }
4227
4244
  },
@@ -4632,6 +4632,26 @@
4632
4632
  "sv": "Array av ämnen som inger mycket stora betänkligheter, närvaro >0,1 % g/g. REACH art. 33 gäller varor, inte blandningar; för rengöringsmedel och färger är den relevanta skyldigheten säkerhetsdatabladet (art. 31(1)(a), 31(3)(b)). Passet är inte skyldigt att innehålla detta enligt REACH art. 33."
4633
4633
  },
4634
4634
  "dataType": "array",
4635
+ "entryProperties": {
4636
+ "substanceName": {
4637
+ "type": "string",
4638
+ "required": true
4639
+ },
4640
+ "casNumber": {
4641
+ "type": "string",
4642
+ "format": "cas-number"
4643
+ },
4644
+ "ecNumber": {
4645
+ "type": "string"
4646
+ },
4647
+ "concentrationPercent": {
4648
+ "type": "number",
4649
+ "description": "% by mass of the article or mixture"
4650
+ },
4651
+ "locationInProduct": {
4652
+ "type": "string"
4653
+ }
4654
+ },
4635
4655
  "unit": null,
4636
4656
  "translatable": false,
4637
4657
  "defaultValue": null,
@@ -4681,7 +4701,7 @@
4681
4701
  "SVHC list",
4682
4702
  "candidate list substances"
4683
4703
  ],
4684
- "expectedFormat": "Array of objects: [{substanceName: 'Formaldehyde', casNumber: '50-00-0', ecNumber: '200-001-8', concentrationPercent: 0.15, locationInProduct: 'Preservative'}]. The svhcSubstanceName / svhcCasNumber / svhcEcNumber / svhcConcentrationRange / svhcLocationInProduct fields describe a SINGLE substance; use this array when more than one is present.",
4704
+ "expectedFormat": "Array of objects: [{substanceName: 'Formaldehyde', casNumber: '50-00-0', ecNumber: '200-001-8', concentrationPercent: 0.15, locationInProduct: 'Preservative'}]. Each item: substanceName (string, required); casNumber (string); ecNumber (string); concentrationPercent (number, % by mass of the article or mixture); locationInProduct (string). The svhcSubstanceName / svhcCasNumber / svhcEcNumber / svhcConcentrationRange / svhcLocationInProduct fields describe a SINGLE substance; use this array when more than one is present.",
4685
4705
  "extractionPriority": 9
4686
4706
  }
4687
4707
  },
@@ -15587,6 +15587,29 @@
15587
15587
  "sv": "Problematiska ämnen enligt REACH/SCIP som förekommer i halter över 0,1 % w/w"
15588
15588
  },
15589
15589
  "dataType": "array",
15590
+ "entryProperties": {
15591
+ "substanceName": {
15592
+ "type": "string",
15593
+ "required": true
15594
+ },
15595
+ "casNumber": {
15596
+ "type": "string",
15597
+ "format": "cas-number"
15598
+ },
15599
+ "ecNumber": {
15600
+ "type": "string"
15601
+ },
15602
+ "concentrationPercent": {
15603
+ "type": "number",
15604
+ "description": "% by mass of the article or mixture"
15605
+ },
15606
+ "locationInProduct": {
15607
+ "type": "string"
15608
+ },
15609
+ "safeUseInstructions": {
15610
+ "type": "string"
15611
+ }
15612
+ },
15590
15613
  "unit": null,
15591
15614
  "translatable": false,
15592
15615
  "defaultValue": null,
@@ -15637,7 +15660,7 @@
15637
15660
  "SCIP substances",
15638
15661
  "candidate list substances"
15639
15662
  ],
15640
- "expectedFormat": "Array of objects: {name, casNumber, ecNumber, concentration, location, safeUse}",
15663
+ "expectedFormat": "Array of objects: [{substanceName: 'Lead', casNumber: '7439-92-1', ecNumber: '231-100-4', concentrationPercent: 0.12, locationInProduct: 'Solder', safeUseInstructions: 'Do not dismantle'}]. Each item: substanceName (string, required); casNumber (string); ecNumber (string); concentrationPercent (number, % by mass of the article or mixture); locationInProduct (string); safeUseInstructions (string).",
15641
15664
  "extractionPriority": 8
15642
15665
  }
15643
15666
  },
@@ -18808,6 +18831,25 @@
18808
18831
  "sv": "Fördelning av materialen i produkten med procentandelar och återvinningsbarhet"
18809
18832
  },
18810
18833
  "dataType": "array",
18834
+ "entryProperties": {
18835
+ "material": {
18836
+ "type": "string",
18837
+ "required": true
18838
+ },
18839
+ "massPercent": {
18840
+ "type": "number",
18841
+ "description": "% of the product's total mass"
18842
+ },
18843
+ "massKg": {
18844
+ "type": "number"
18845
+ },
18846
+ "recyclable": {
18847
+ "type": "boolean"
18848
+ },
18849
+ "recyclingMethod": {
18850
+ "type": "string"
18851
+ }
18852
+ },
18811
18853
  "unit": null,
18812
18854
  "translatable": false,
18813
18855
  "defaultValue": null,
@@ -18861,7 +18903,7 @@
18861
18903
  "material breakdown",
18862
18904
  "composition"
18863
18905
  ],
18864
- "expectedFormat": "Array of objects: {name, percentage, weight, isRecyclable, recyclingMethod}",
18906
+ "expectedFormat": "Array of objects: [{material: 'Aluminium', massPercent: 35, massKg: 0.42, recyclable: true, recyclingMethod: 'Mechanical'}]. Each item: material (string, required); massPercent (number, % of the product's total mass); massKg (number); recyclable (boolean); recyclingMethod (string).",
18865
18907
  "extractionPriority": 8
18866
18908
  }
18867
18909
  },
@@ -1945,6 +1945,16 @@
1945
1945
  "sv": "Konserveringsämnen med CAS-nummer, obligatorisk deklaration för kosmetika och rengöringsmedel"
1946
1946
  },
1947
1947
  "dataType": "array",
1948
+ "entryProperties": {
1949
+ "substanceName": {
1950
+ "type": "string",
1951
+ "required": true
1952
+ },
1953
+ "casNumber": {
1954
+ "type": "string",
1955
+ "format": "cas-number"
1956
+ }
1957
+ },
1948
1958
  "unit": null,
1949
1959
  "translatable": false,
1950
1960
  "defaultValue": null,
@@ -2004,7 +2014,7 @@
2004
2014
  "biocide",
2005
2015
  "conservation agent"
2006
2016
  ],
2007
- "expectedFormat": "Array of objects with substanceName and casNumber",
2017
+ "expectedFormat": "Array of objects: [{substanceName: 'Phenoxyethanol', casNumber: '122-99-6'}]. Each item: substanceName (string, required); casNumber (string).",
2008
2018
  "extractionPriority": 3
2009
2019
  }
2010
2020
  },
@@ -2063,6 +2073,23 @@
2063
2073
  "sv": "SVHC-ämnen närvarande över 0,1 % w/w med namn, CAS-nummer, koncentrationsintervall och instruktioner för säker användning"
2064
2074
  },
2065
2075
  "dataType": "array",
2076
+ "entryProperties": {
2077
+ "substanceName": {
2078
+ "type": "string",
2079
+ "required": true
2080
+ },
2081
+ "casNumber": {
2082
+ "type": "string",
2083
+ "format": "cas-number"
2084
+ },
2085
+ "concentrationPercent": {
2086
+ "type": "number",
2087
+ "description": "% by mass of the article or mixture"
2088
+ },
2089
+ "safeUseInstructions": {
2090
+ "type": "string"
2091
+ }
2092
+ },
2066
2093
  "unit": null,
2067
2094
  "translatable": false,
2068
2095
  "defaultValue": null,
@@ -2114,7 +2141,7 @@
2114
2141
  "hazardous substances",
2115
2142
  "REACH substances"
2116
2143
  ],
2117
- "expectedFormat": "Array of objects: {substanceName, casNumber, concentrationPercent, safeUseInstructions}",
2144
+ "expectedFormat": "Array of objects: [{substanceName: 'Butylparaben', casNumber: '94-26-8', concentrationPercent: 0.12, safeUseInstructions: 'Keep away from children'}]. Each item: substanceName (string, required); casNumber (string); concentrationPercent (number, % by mass of the article or mixture); safeUseInstructions (string).",
2118
2145
  "extractionPriority": 4
2119
2146
  }
2120
2147
  },
@@ -2890,6 +2917,15 @@
2890
2917
  "sv": "H-kodade faroangivelser som beskriver farans natur (t.ex. H315 Irriterar huden)"
2891
2918
  },
2892
2919
  "dataType": "array",
2920
+ "entryProperties": {
2921
+ "code": {
2922
+ "type": "string",
2923
+ "required": true
2924
+ },
2925
+ "text": {
2926
+ "type": "string"
2927
+ }
2928
+ },
2893
2929
  "unit": null,
2894
2930
  "translatable": true,
2895
2931
  "defaultValue": null,
@@ -2939,7 +2975,7 @@
2939
2975
  "H-codes",
2940
2976
  "risk phrases"
2941
2977
  ],
2942
- "expectedFormat": "Array of objects: {code: 'H315', text: 'Causes skin irritation'}",
2978
+ "expectedFormat": "Array of objects: [{code: 'H315', text: 'Causes skin irritation'}]. Each item: code (string, required); text (string).",
2943
2979
  "extractionPriority": 5
2944
2980
  }
2945
2981
  },
@@ -2998,6 +3034,15 @@
2998
3034
  "sv": "P-kodade skyddsangivelser som beskriver rekommenderade säkerhetsåtgärder"
2999
3035
  },
3000
3036
  "dataType": "array",
3037
+ "entryProperties": {
3038
+ "code": {
3039
+ "type": "string",
3040
+ "required": true
3041
+ },
3042
+ "text": {
3043
+ "type": "string"
3044
+ }
3045
+ },
3001
3046
  "unit": null,
3002
3047
  "translatable": true,
3003
3048
  "defaultValue": null,
@@ -3047,7 +3092,7 @@
3047
3092
  "P-codes",
3048
3093
  "safety phrases"
3049
3094
  ],
3050
- "expectedFormat": "Array of objects: {code: 'P264', text: 'Wash hands thoroughly after handling'}",
3095
+ "expectedFormat": "Array of objects: [{code: 'P264', text: 'Wash hands thoroughly after handling'}]. Each item: code (string, required); text (string).",
3051
3096
  "extractionPriority": 4
3052
3097
  }
3053
3098
  },
@@ -2233,6 +2233,26 @@
2233
2233
  "sv": "Strukturerad lista över alla material per komponent med viktprocent"
2234
2234
  },
2235
2235
  "dataType": "array",
2236
+ "entryProperties": {
2237
+ "component": {
2238
+ "type": "string"
2239
+ },
2240
+ "material": {
2241
+ "type": "string",
2242
+ "required": true
2243
+ },
2244
+ "massKg": {
2245
+ "type": "number"
2246
+ },
2247
+ "massPercent": {
2248
+ "type": "number",
2249
+ "description": "% of the product's total mass"
2250
+ },
2251
+ "countryOfOrigin": {
2252
+ "type": "string",
2253
+ "format": "iso3166-alpha2"
2254
+ }
2255
+ },
2236
2256
  "unit": null,
2237
2257
  "translatable": false,
2238
2258
  "defaultValue": null,
@@ -2286,7 +2306,7 @@
2286
2306
  "components list",
2287
2307
  "material breakdown"
2288
2308
  ],
2289
- "expectedFormat": "Array of objects: {component, material, weight_kg, weight_percentage, origin_country}",
2309
+ "expectedFormat": "Array of objects: [{component: 'Seat frame', material: 'Beech wood', massKg: 6.2, massPercent: 41, countryOfOrigin: 'PL'}]. Each item: component (string); material (string, required); massKg (number); massPercent (number, % of the product's total mass); countryOfOrigin (string).",
2290
2310
  "extractionPriority": 9
2291
2311
  }
2292
2312
  },
@@ -2894,6 +2914,19 @@
2894
2914
  "sv": "Använt träslag (vanligt namn och vetenskapligt namn)"
2895
2915
  },
2896
2916
  "dataType": "array",
2917
+ "entryProperties": {
2918
+ "commonName": {
2919
+ "type": "string",
2920
+ "required": true
2921
+ },
2922
+ "scientificName": {
2923
+ "type": "string"
2924
+ },
2925
+ "sharePercent": {
2926
+ "type": "number",
2927
+ "description": "% of the product's wood content"
2928
+ }
2929
+ },
2897
2930
  "unit": null,
2898
2931
  "translatable": false,
2899
2932
  "defaultValue": null,
@@ -2943,7 +2976,7 @@
2943
2976
  "wood type",
2944
2977
  "tree species"
2945
2978
  ],
2946
- "expectedFormat": "Array of objects: {common_name, scientific_name, percentage}",
2979
+ "expectedFormat": "Array of objects: [{commonName: 'European beech', scientificName: 'Fagus sylvatica', sharePercent: 80}]. Each item: commonName (string, required); scientificName (string); sharePercent (number, % of the product's wood content).",
2947
2980
  "extractionPriority": 8
2948
2981
  }
2949
2982
  },
@@ -3542,6 +3575,26 @@
3542
3575
  "sv": "Ämnen som inger mycket stora betänkligheter på REACH-kandidatförteckningen över 0,1 % w/w"
3543
3576
  },
3544
3577
  "dataType": "array",
3578
+ "entryProperties": {
3579
+ "substanceName": {
3580
+ "type": "string",
3581
+ "required": true
3582
+ },
3583
+ "casNumber": {
3584
+ "type": "string",
3585
+ "format": "cas-number"
3586
+ },
3587
+ "concentrationPercent": {
3588
+ "type": "number",
3589
+ "description": "% by mass of the article or mixture"
3590
+ },
3591
+ "locationInProduct": {
3592
+ "type": "string"
3593
+ },
3594
+ "hazardClassification": {
3595
+ "type": "string"
3596
+ }
3597
+ },
3545
3598
  "unit": null,
3546
3599
  "translatable": false,
3547
3600
  "defaultValue": null,
@@ -3592,7 +3645,7 @@
3592
3645
  "REACH candidate list",
3593
3646
  "hazardous substances"
3594
3647
  ],
3595
- "expectedFormat": "Array of objects: [{substanceName: 'Formaldehyde', casNumber: '50-00-0', concentrationPercent: 0.15, locationInProduct: 'Adhesive'}]",
3648
+ "expectedFormat": "Array of objects: [{substanceName: 'Formaldehyde', casNumber: '50-00-0', concentrationPercent: 0.15, locationInProduct: 'Adhesive', hazardClassification: 'Carc. 1B'}]. Each item: substanceName (string, required); casNumber (string); concentrationPercent (number, % by mass of the article or mixture); locationInProduct (string); hazardClassification (string).",
3596
3649
  "extractionPriority": 9
3597
3650
  }
3598
3651
  },
@@ -4271,6 +4324,23 @@
4271
4324
  "sv": "Lista över använda flamskyddskemikalier, om tillämpligt. Halogenerade flamskyddsmedel granskas av ECHA."
4272
4325
  },
4273
4326
  "dataType": "array",
4327
+ "entryProperties": {
4328
+ "substanceName": {
4329
+ "type": "string",
4330
+ "required": true
4331
+ },
4332
+ "casNumber": {
4333
+ "type": "string",
4334
+ "format": "cas-number"
4335
+ },
4336
+ "type": {
4337
+ "type": "string"
4338
+ },
4339
+ "concentrationPercent": {
4340
+ "type": "number",
4341
+ "description": "% by mass of the article"
4342
+ }
4343
+ },
4274
4344
  "unit": null,
4275
4345
  "translatable": false,
4276
4346
  "defaultValue": null,
@@ -4320,7 +4390,7 @@
4320
4390
  "FR chemicals",
4321
4391
  "flame retardant list"
4322
4392
  ],
4323
- "expectedFormat": "Array of objects: {substance_name, cas_number, type, concentration_percentage}",
4393
+ "expectedFormat": "Array of objects: [{substanceName: 'Aluminium hydroxide', casNumber: '21645-51-2', type: 'Inorganic', concentrationPercent: 5}]. Each item: substanceName (string, required); casNumber (string); type (string); concentrationPercent (number, % by mass of the article).",
4324
4394
  "extractionPriority": 7
4325
4395
  }
4326
4396
  },
@@ -6992,6 +7062,18 @@
6992
7062
  "sv": "Lista över tillgängliga reservdelar med beställningsinformation"
6993
7063
  },
6994
7064
  "dataType": "array",
7065
+ "entryProperties": {
7066
+ "partName": {
7067
+ "type": "string",
7068
+ "required": true
7069
+ },
7070
+ "partNumber": {
7071
+ "type": "string"
7072
+ },
7073
+ "orderingUrl": {
7074
+ "type": "string"
7075
+ }
7076
+ },
6995
7077
  "unit": null,
6996
7078
  "translatable": false,
6997
7079
  "defaultValue": null,
@@ -7044,7 +7126,7 @@
7044
7126
  "spare parts",
7045
7127
  "parts catalog"
7046
7128
  ],
7047
- "expectedFormat": "Array of objects: {part_name, part_number, ordering_url}",
7129
+ "expectedFormat": "Array of objects: [{partName: 'Seat cushion', partNumber: 'SC-102', orderingUrl: 'https://example.com/parts/SC-102'}]. Each item: partName (string, required); partNumber (string); orderingUrl (string).",
7048
7130
  "extractionPriority": 6
7049
7131
  }
7050
7132
  },
@@ -7214,6 +7296,18 @@
7214
7296
  "sv": "Återvinningsbarhet per materialtyp"
7215
7297
  },
7216
7298
  "dataType": "array",
7299
+ "entryProperties": {
7300
+ "material": {
7301
+ "type": "string",
7302
+ "required": true
7303
+ },
7304
+ "recyclable": {
7305
+ "type": "boolean"
7306
+ },
7307
+ "recyclingMethod": {
7308
+ "type": "string"
7309
+ }
7310
+ },
7217
7311
  "unit": null,
7218
7312
  "translatable": false,
7219
7313
  "defaultValue": null,
@@ -7262,7 +7356,7 @@
7262
7356
  "recyclability per material",
7263
7357
  "material recycling breakdown"
7264
7358
  ],
7265
- "expectedFormat": "Array of objects: {material, recyclable, method}",
7359
+ "expectedFormat": "Array of objects: [{material: 'Steel', recyclable: true, recyclingMethod: 'Mechanical'}]. Each item: material (string, required); recyclable (boolean); recyclingMethod (string).",
7266
7360
  "extractionPriority": 5
7267
7361
  }
7268
7362
  },
@@ -7858,6 +7952,15 @@
7858
7952
  "sv": "Övriga innehavda miljö-/kvalitetscertifieringar"
7859
7953
  },
7860
7954
  "dataType": "array",
7955
+ "entryProperties": {
7956
+ "name": {
7957
+ "type": "string",
7958
+ "required": true
7959
+ },
7960
+ "licenseNumber": {
7961
+ "type": "string"
7962
+ }
7963
+ },
7861
7964
  "unit": null,
7862
7965
  "translatable": false,
7863
7966
  "defaultValue": null,
@@ -7905,7 +8008,7 @@
7905
8008
  "eco labels",
7906
8009
  "third-party certifications"
7907
8010
  ],
7908
- "expectedFormat": "Array of objects: {name, license_number}",
8011
+ "expectedFormat": "Array of objects: [{name: 'Nordic Swan', licenseNumber: '3071-0001'}]. Each item: name (string, required); licenseNumber (string).",
7909
8012
  "extractionPriority": 5
7910
8013
  }
7911
8014
  },
@@ -8725,6 +8828,22 @@
8725
8828
  "sv": "Viktiga aktörer i leveranskedjan som är involverade i produktionen (i flera nivåer)"
8726
8829
  },
8727
8830
  "dataType": "array",
8831
+ "entryProperties": {
8832
+ "tier": {
8833
+ "type": "string"
8834
+ },
8835
+ "role": {
8836
+ "type": "string"
8837
+ },
8838
+ "companyName": {
8839
+ "type": "string",
8840
+ "required": true
8841
+ },
8842
+ "country": {
8843
+ "type": "string",
8844
+ "format": "iso3166-alpha2"
8845
+ }
8846
+ },
8728
8847
  "unit": null,
8729
8848
  "translatable": false,
8730
8849
  "defaultValue": null,
@@ -8775,7 +8894,7 @@
8775
8894
  "production chain",
8776
8895
  "tier 1 suppliers"
8777
8896
  ],
8778
- "expectedFormat": "Array of objects: {tier, role, company_name, country}",
8897
+ "expectedFormat": "Array of objects: [{tier: '1', role: 'Upholstery', companyName: 'Example Textiles', country: 'PT'}]. Each item: tier (string); role (string); companyName (string, required); country (string).",
8779
8898
  "extractionPriority": 5
8780
8899
  }
8781
8900
  },
@@ -7092,6 +7092,15 @@
7092
7092
  "sv": "Array av ytterligare anpassade certifikat som inte täcks av standardfält"
7093
7093
  },
7094
7094
  "dataType": "array",
7095
+ "entryProperties": {
7096
+ "name": {
7097
+ "type": "string",
7098
+ "required": true
7099
+ },
7100
+ "url": {
7101
+ "type": "string"
7102
+ }
7103
+ },
7095
7104
  "unit": null,
7096
7105
  "translatable": false,
7097
7106
  "defaultValue": null,
@@ -7141,7 +7150,7 @@
7141
7150
  "additional certs",
7142
7151
  "extra certifications"
7143
7152
  ],
7144
- "expectedFormat": "Array of objects with name and URL/file reference",
7153
+ "expectedFormat": "Array of objects: [{name: 'Assay certificate', url: 'https://example.com/cert.pdf'}]. Each item: name (string, required); url (string).",
7145
7154
  "extractionPriority": 3
7146
7155
  }
7147
7156
  },
@@ -4363,6 +4363,26 @@
4363
4363
  "sv": "Array av ämnen som inger mycket stora betänkligheter, närvaro >0,1 % g/g. REACH art. 33 gäller varor, inte blandningar; för rengöringsmedel och färger är den relevanta skyldigheten säkerhetsdatabladet (art. 31(1)(a), 31(3)(b)). Passet är inte skyldigt att innehålla detta enligt REACH art. 33."
4364
4364
  },
4365
4365
  "dataType": "array",
4366
+ "entryProperties": {
4367
+ "substanceName": {
4368
+ "type": "string",
4369
+ "required": true
4370
+ },
4371
+ "casNumber": {
4372
+ "type": "string",
4373
+ "format": "cas-number"
4374
+ },
4375
+ "ecNumber": {
4376
+ "type": "string"
4377
+ },
4378
+ "concentrationPercent": {
4379
+ "type": "number",
4380
+ "description": "% by mass of the article or mixture"
4381
+ },
4382
+ "locationInProduct": {
4383
+ "type": "string"
4384
+ }
4385
+ },
4366
4386
  "unit": null,
4367
4387
  "translatable": false,
4368
4388
  "defaultValue": null,
@@ -4412,7 +4432,7 @@
4412
4432
  "SVHC list",
4413
4433
  "candidate list substances"
4414
4434
  ],
4415
- "expectedFormat": "Array of objects: [{substanceName: 'Formaldehyde', casNumber: '50-00-0', ecNumber: '200-001-8', concentrationPercent: 0.15, locationInProduct: 'Preservative'}]. The svhcSubstanceName / svhcCasNumber / svhcEcNumber / svhcConcentrationRange / svhcLocationInProduct fields describe a SINGLE substance; use this array when more than one is present.",
4435
+ "expectedFormat": "Array of objects: [{substanceName: 'Formaldehyde', casNumber: '50-00-0', ecNumber: '200-001-8', concentrationPercent: 0.15, locationInProduct: 'Preservative'}]. Each item: substanceName (string, required); casNumber (string); ecNumber (string); concentrationPercent (number, % by mass of the article or mixture); locationInProduct (string). The svhcSubstanceName / svhcCasNumber / svhcEcNumber / svhcConcentrationRange / svhcLocationInProduct fields describe a SINGLE substance; use this array when more than one is present.",
4416
4436
  "extractionPriority": 9
4417
4437
  }
4418
4438
  },
@@ -8258,6 +8258,29 @@
8258
8258
  "nl": "Lijst van SVHC-stoffen aanwezig boven 0,1 gew.%, met CAS-nummers en concentraties."
8259
8259
  },
8260
8260
  "dataType": "array",
8261
+ "entryProperties": {
8262
+ "substanceName": {
8263
+ "type": "string",
8264
+ "required": true
8265
+ },
8266
+ "casNumber": {
8267
+ "type": "string",
8268
+ "format": "cas-number"
8269
+ },
8270
+ "ecNumber": {
8271
+ "type": "string"
8272
+ },
8273
+ "concentrationPercent": {
8274
+ "type": "number",
8275
+ "description": "% by mass of the article or mixture"
8276
+ },
8277
+ "locationInProduct": {
8278
+ "type": "string"
8279
+ },
8280
+ "hazardClassification": {
8281
+ "type": "string"
8282
+ }
8283
+ },
8261
8284
  "unit": null,
8262
8285
  "translatable": false,
8263
8286
  "defaultValue": null,
@@ -8309,7 +8332,7 @@
8309
8332
  "SCIP substances",
8310
8333
  "hazardous substances"
8311
8334
  ],
8312
- "expectedFormat": "Array of objects: [{substanceName: 'Lead', casNumber: '7439-92-1', ecNumber: '231-100-4', concentrationPercent: 0.15, locationInProduct: 'Coating'}]",
8335
+ "expectedFormat": "Array of objects: [{substanceName: 'Lead', casNumber: '7439-92-1', ecNumber: '231-100-4', concentrationPercent: 0.15, locationInProduct: 'Coating', hazardClassification: 'Repr. 1A'}]. Each item: substanceName (string, required); casNumber (string); ecNumber (string); concentrationPercent (number, % by mass of the article or mixture); locationInProduct (string); hazardClassification (string).",
8313
8336
  "extractionPriority": 7
8314
8337
  }
8315
8338
  },
@@ -3763,6 +3763,16 @@
3763
3763
  "sv": "Lista över primära material som används i leksaken (t.ex. ABS-plast, trä, bomullstyg, metall)"
3764
3764
  },
3765
3765
  "dataType": "array",
3766
+ "entryProperties": {
3767
+ "material": {
3768
+ "type": "string",
3769
+ "required": true
3770
+ },
3771
+ "massPercent": {
3772
+ "type": "number",
3773
+ "description": "% of the toy's total mass"
3774
+ }
3775
+ },
3766
3776
  "unit": null,
3767
3777
  "translatable": true,
3768
3778
  "defaultValue": null,
@@ -3812,7 +3822,7 @@
3812
3822
  "material list",
3813
3823
  "components"
3814
3824
  ],
3815
- "expectedFormat": "Array of objects: [{material: 'ABS plastic', weightPercent: 60}, {material: 'Beech wood', weightPercent: 30}]",
3825
+ "expectedFormat": "Array of objects: [{material: 'ABS plastic', massPercent: 60}]. Each item: material (string, required); massPercent (number, % of the toy's total mass).",
3816
3826
  "extractionPriority": 4
3817
3827
  }
3818
3828
  },
@@ -3990,6 +4000,23 @@
3990
4000
  "sv": "Detaljerad lista över ämnen som inger betänkligheter i leksaken, inklusive CAS-nummer, koncentrationer och placeringar (SCIP-nivå detalj)"
3991
4001
  },
3992
4002
  "dataType": "array",
4003
+ "entryProperties": {
4004
+ "substanceName": {
4005
+ "type": "string",
4006
+ "required": true
4007
+ },
4008
+ "casNumber": {
4009
+ "type": "string",
4010
+ "format": "cas-number"
4011
+ },
4012
+ "concentrationPercent": {
4013
+ "type": "number",
4014
+ "description": "% by mass of the article or mixture"
4015
+ },
4016
+ "locationInProduct": {
4017
+ "type": "string"
4018
+ }
4019
+ },
3993
4020
  "unit": null,
3994
4021
  "translatable": false,
3995
4022
  "defaultValue": null,
@@ -4041,7 +4068,7 @@
4041
4068
  "SDS substances",
4042
4069
  "SVHC list"
4043
4070
  ],
4044
- "expectedFormat": "Array of objects: [{name: 'Di(2-ethylhexyl) phthalate', casNumber: '117-81-7', concentration: 0.05, location: 'PVC coating'}]",
4071
+ "expectedFormat": "Array of objects: [{substanceName: 'Di(2-ethylhexyl) phthalate', casNumber: '117-81-7', concentrationPercent: 0.05, locationInProduct: 'PVC coating'}]. Each item: substanceName (string, required); casNumber (string); concentrationPercent (number, % by mass of the article or mixture); locationInProduct (string).",
4045
4072
  "extractionPriority": 3
4046
4073
  }
4047
4074
  },
@@ -6217,6 +6217,20 @@
6217
6217
  "sv": "Strukturerad lista över däckmaterial i viktprocent"
6218
6218
  },
6219
6219
  "dataType": "array",
6220
+ "entryProperties": {
6221
+ "material": {
6222
+ "type": "string",
6223
+ "required": true
6224
+ },
6225
+ "massPercent": {
6226
+ "type": "number",
6227
+ "description": "% of the tyre's total mass"
6228
+ },
6229
+ "countryOfOrigin": {
6230
+ "type": "string",
6231
+ "format": "iso3166-alpha2"
6232
+ }
6233
+ },
6220
6234
  "unit": null,
6221
6235
  "translatable": false,
6222
6236
  "defaultValue": null,
@@ -6271,7 +6285,7 @@
6271
6285
  "ingredients",
6272
6286
  "material breakdown"
6273
6287
  ],
6274
- "expectedFormat": "Array of objects with material, weight_percentage, origin_country",
6288
+ "expectedFormat": "Array of objects: [{material: 'Natural rubber', massPercent: 22, countryOfOrigin: 'TH'}]. Each item: material (string, required); massPercent (number, % of the tyre's total mass); countryOfOrigin (string).",
6275
6289
  "extractionPriority": 8
6276
6290
  }
6277
6291
  },
@@ -7100,6 +7114,26 @@
7100
7114
  "sv": "Ämnen som inger mycket stora betänkligheter över tröskelvärdet 0,1 vikt-%"
7101
7115
  },
7102
7116
  "dataType": "array",
7117
+ "entryProperties": {
7118
+ "substanceName": {
7119
+ "type": "string",
7120
+ "required": true
7121
+ },
7122
+ "casNumber": {
7123
+ "type": "string",
7124
+ "format": "cas-number"
7125
+ },
7126
+ "concentrationPercent": {
7127
+ "type": "number",
7128
+ "description": "% by mass of the article or mixture"
7129
+ },
7130
+ "locationInProduct": {
7131
+ "type": "string"
7132
+ },
7133
+ "hazardClassification": {
7134
+ "type": "string"
7135
+ }
7136
+ },
7103
7137
  "unit": null,
7104
7138
  "translatable": false,
7105
7139
  "defaultValue": null,
@@ -7150,7 +7184,7 @@
7150
7184
  "REACH candidate list",
7151
7185
  "hazardous substances"
7152
7186
  ],
7153
- "expectedFormat": "Array of objects: [{substanceName: 'DEHP', casNumber: '117-81-7', concentrationPercent: 0.15, locationInProduct: 'Sidewall compound'}]",
7187
+ "expectedFormat": "Array of objects: [{substanceName: 'DEHP', casNumber: '117-81-7', concentrationPercent: 0.15, locationInProduct: 'Sidewall compound', hazardClassification: 'Repr. 1B'}]. Each item: substanceName (string, required); casNumber (string); concentrationPercent (number, % by mass of the article or mixture); locationInProduct (string); hazardClassification (string).",
7154
7188
  "extractionPriority": 8
7155
7189
  }
7156
7190
  },
@@ -9173,6 +9207,19 @@
9173
9207
  "sv": "Återvinningsvägar vid livslängdens slut och procentandelar"
9174
9208
  },
9175
9209
  "dataType": "array",
9210
+ "entryProperties": {
9211
+ "pathway": {
9212
+ "type": "string",
9213
+ "required": true
9214
+ },
9215
+ "sharePercent": {
9216
+ "type": "number",
9217
+ "description": "% of the tyre's mass"
9218
+ },
9219
+ "outputUses": {
9220
+ "type": "string"
9221
+ }
9222
+ },
9176
9223
  "unit": null,
9177
9224
  "translatable": false,
9178
9225
  "defaultValue": null,
@@ -9226,7 +9273,7 @@
9226
9273
  "recycling routes",
9227
9274
  "end of life pathways"
9228
9275
  ],
9229
- "expectedFormat": "Array of objects with pathway, percentage, output_uses",
9276
+ "expectedFormat": "Array of objects: [{pathway: 'Granulation', sharePercent: 60, outputUses: 'Sports surfaces'}]. Each item: pathway (string, required); sharePercent (number, % of the tyre's mass); outputUses (string).",
9230
9277
  "extractionPriority": 7
9231
9278
  }
9232
9279
  },
@@ -10152,6 +10199,15 @@
10152
10199
  "sv": "Ytterligare kvalitets-/miljöcertifieringar"
10153
10200
  },
10154
10201
  "dataType": "array",
10202
+ "entryProperties": {
10203
+ "name": {
10204
+ "type": "string",
10205
+ "required": true
10206
+ },
10207
+ "certificateNumber": {
10208
+ "type": "string"
10209
+ }
10210
+ },
10155
10211
  "unit": null,
10156
10212
  "translatable": false,
10157
10213
  "defaultValue": null,
@@ -10199,7 +10255,7 @@
10199
10255
  "quality certificates",
10200
10256
  "environmental certificates"
10201
10257
  ],
10202
- "expectedFormat": "Array of objects with name and certificate_number",
10258
+ "expectedFormat": "Array of objects: [{name: 'SmartWay', certificateNumber: 'SW-2026-114'}]. Each item: name (string, required); certificateNumber (string).",
10203
10259
  "extractionPriority": 4
10204
10260
  }
10205
10261
  },