@tracepass/dpp-schemas 1.18.4 → 1.18.6
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 +15 -14
- package/index.json +5 -7
- package/package.json +1 -1
- package/templates/construction.json +6 -6
- package/templates/electronics.json +24 -24
- package/templates/packaging.json +3 -5
- package/templates/steel.json +2 -2
package/README.md
CHANGED
|
@@ -204,9 +204,11 @@ registry:
|
|
|
204
204
|
Five things are worth pointing out.
|
|
205
205
|
|
|
206
206
|
**`regulation.effectiveDate` is the date the passport obligation begins — not the date
|
|
207
|
-
the regulation applies.** Those are different dates and can sit years apart
|
|
208
|
-
(EU) 2025/40 has applied since
|
|
209
|
-
|
|
207
|
+
the regulation applies.** Those are different dates and can sit years apart, and
|
|
208
|
+
some categories have no passport obligation at all. PPWR (EU) 2025/40 has applied since
|
|
209
|
+
12 August 2026 but creates no packaging passport: Article 12 is a labelling regime (a
|
|
210
|
+
harmonised material label, with a QR code optional except on reusable packaging), so
|
|
211
|
+
`packaging` carries `dateBasis: "none"`, not `2026-08-12`.
|
|
210
212
|
|
|
211
213
|
Read both dates with their precision marker. `datePrecision` / `mandatoryDatePrecision`
|
|
212
214
|
are `"day"` or `"year"`; absent means `"day"`:
|
|
@@ -215,26 +217,25 @@ are `"day"` or `"year"`; absent means `"day"`:
|
|
|
215
217
|
2023/1542 Article 77.
|
|
216
218
|
- **`"year"`** — only the year is known, because the governing delegated or implementing
|
|
217
219
|
act is not yet adopted. The day and month are filler. **Do not render these as a
|
|
218
|
-
deadline.**
|
|
219
|
-
carry an exact date.
|
|
220
|
+
deadline.** Six of the thirteen categories are currently `"year"`.
|
|
220
221
|
|
|
221
222
|
**`datePrecision` is not the same question as `dateBasis`, and you usually want the
|
|
222
223
|
latter.** Precision asks *how exact is this date*; basis asks *does an adopted
|
|
223
224
|
instrument set it at all*. `dateBasis: "statutory"` means a provision in force fixes
|
|
224
225
|
the date and it can be cited — exactly three categories: `battery` (2027-02-18,
|
|
225
226
|
Reg (EU) 2023/1542 Art. 77(1)), `detergents` (2029-09-23) and `toys` (2030-08-01).
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
that does not exist. Filter on `dateBasis`, not on precision, when you need to know
|
|
233
|
-
what is actually mandated.
|
|
227
|
+
Six are `"indicative"`: no adopted act sets the date, so it is a planning target with
|
|
228
|
+
no legal force. Four are `"none"` — `fmcg`, `jewelry`, `packaging` and `paints-coatings`:
|
|
229
|
+
no adopted act creates a passport for them and none is scheduled, so a passport is
|
|
230
|
+
voluntary and both dates carry the sentinel `9999-12-31`, which must never be shown or
|
|
231
|
+
compared. Filter on `dateBasis`, not on precision, when you need to know what is
|
|
232
|
+
actually mandated.
|
|
234
233
|
|
|
235
234
|
```python
|
|
236
235
|
r = template["regulation"]
|
|
237
|
-
if r.get("
|
|
236
|
+
if r.get("dateBasis") == "none":
|
|
237
|
+
print("No passport obligation; a passport is voluntary") # sentinel dates: ignore
|
|
238
|
+
elif r.get("datePrecision", "day") == "year":
|
|
238
239
|
print(f"DPP obligation expected in {r['effectiveDate'][:4]}") # "2027"
|
|
239
240
|
else:
|
|
240
241
|
print(f"DPP obligation from {r['effectiveDate']}") # "2027-02-18"
|
package/index.json
CHANGED
|
@@ -141,11 +141,9 @@
|
|
|
141
141
|
"regulation": {
|
|
142
142
|
"name": "Packaging and Packaging Waste Regulation",
|
|
143
143
|
"number": "(EU) 2025/40",
|
|
144
|
-
"effectiveDate": "
|
|
145
|
-
"
|
|
146
|
-
"
|
|
147
|
-
"mandatoryDatePrecision": "year",
|
|
148
|
-
"dateBasis": "indicative"
|
|
144
|
+
"effectiveDate": "9999-12-31",
|
|
145
|
+
"mandatoryDate": "9999-12-31",
|
|
146
|
+
"dateBasis": "none"
|
|
149
147
|
}
|
|
150
148
|
},
|
|
151
149
|
{
|
|
@@ -175,9 +173,9 @@
|
|
|
175
173
|
"regulation": {
|
|
176
174
|
"name": "EU ESPR - Iron, Steel & Aluminium",
|
|
177
175
|
"number": "(EU) 2024/1781",
|
|
178
|
-
"effectiveDate": "
|
|
176
|
+
"effectiveDate": "2028-01-01",
|
|
179
177
|
"datePrecision": "year",
|
|
180
|
-
"mandatoryDate": "
|
|
178
|
+
"mandatoryDate": "2029-01-01",
|
|
181
179
|
"mandatoryDatePrecision": "year",
|
|
182
180
|
"dateBasis": "indicative"
|
|
183
181
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tracepass/dpp-schemas",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.6",
|
|
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",
|
|
@@ -4972,12 +4972,12 @@
|
|
|
4972
4972
|
"sortOrder": 37,
|
|
4973
4973
|
"defaultAccessLevel": "public",
|
|
4974
4974
|
"regulationRef": {
|
|
4975
|
-
"article": "CPR
|
|
4975
|
+
"article": "CPR Arts. 13, 17-18",
|
|
4976
4976
|
"annex": null,
|
|
4977
4977
|
"instrument": "32024R3110",
|
|
4978
|
-
"provision": "
|
|
4978
|
+
"provision": "Arts. 13, 17-18 — CE marking (Arts. 17-18), affixed only to products with a declaration of performance and conformity (Art. 13), and only where a harmonised technical specification or a European Technical Assessment covers the product",
|
|
4979
4979
|
"kind": "legislation",
|
|
4980
|
-
"description": "CE marking under the CPR is CONDITIONAL: it applies only where a harmonised technical specification or a European Technical Assessment covers the product, and a product covered by neither cannot be CE-marked at all. The duty is to affix the mark and draw up the Declaration of Performance behind it, not to publish a status flag."
|
|
4980
|
+
"description": "CE marking under the CPR is CONDITIONAL: it applies only where a harmonised technical specification or a European Technical Assessment covers the product, and a product covered by neither cannot be CE-marked at all. The duty is to affix the mark and draw up the Declaration of Performance behind it, not to publish a status flag. Where the product falls under a harmonised standard cited under Regulation (EU) No 305/2011 and still in force, its declaration of performance and CE marking stay governed by Arts. 4 and 8-9 of that Regulation during the transition (Reg. (EU) 2024/3110 Arts. 94 and 95(3), 95(8))."
|
|
4981
4981
|
},
|
|
4982
4982
|
"aiHints": {
|
|
4983
4983
|
"alternateNames": [
|
|
@@ -6496,12 +6496,12 @@
|
|
|
6496
6496
|
"sortOrder": 37,
|
|
6497
6497
|
"defaultAccessLevel": "public",
|
|
6498
6498
|
"regulationRef": {
|
|
6499
|
-
"article": "CPR
|
|
6499
|
+
"article": "CPR Arts. 13, 17-18",
|
|
6500
6500
|
"annex": null,
|
|
6501
6501
|
"instrument": "32024R3110",
|
|
6502
|
-
"provision": "Art. 13
|
|
6502
|
+
"provision": "Arts. 13, 17-18 — CE marking (Arts. 17-18), affixed only to products with a declaration of performance and conformity (Art. 13), and only where a harmonised technical specification or a European Technical Assessment covers the product",
|
|
6503
6503
|
"kind": "legislation",
|
|
6504
|
-
"description": "The CE mark is affixed to the product; the obligation is discharged by that mark and by the Declaration of Performance supporting it, and only where a harmonised technical specification or an ETA covers the product."
|
|
6504
|
+
"description": "The CE mark is affixed to the product; the obligation is discharged by that mark and by the Declaration of Performance supporting it, and only where a harmonised technical specification or an ETA covers the product. Where the product falls under a harmonised standard cited under Regulation (EU) No 305/2011 and still in force, its declaration of performance and CE marking stay governed by Arts. 4 and 8-9 of that Regulation during the transition (Reg. (EU) 2024/3110 Arts. 94 and 95(3), 95(8))."
|
|
6505
6505
|
},
|
|
6506
6506
|
"aiHints": {
|
|
6507
6507
|
"alternateNames": [
|
|
@@ -15909,30 +15909,30 @@
|
|
|
15909
15909
|
"sv": "Innehåller permanentmagneter"
|
|
15910
15910
|
},
|
|
15911
15911
|
"description": {
|
|
15912
|
-
"en": "Whether the product contains permanent magnets
|
|
15913
|
-
"bg": "Дали продуктът съдържа постоянни магнити
|
|
15914
|
-
"de": "Ob das Produkt Permanentmagnete
|
|
15915
|
-
"cs": "Zda výrobek obsahuje permanentní magnety
|
|
15916
|
-
"da": "Om produktet indeholder permanente magneter
|
|
15917
|
-
"el": "Εάν το προϊόν περιέχει μόνιμους μαγνήτες
|
|
15918
|
-
"es": "Indica si el producto contiene imanes permanentes
|
|
15919
|
-
"et": "Kas toode sisaldab püsimagneteid
|
|
15920
|
-
"fi": "Sisältääkö tuote kestomagneetteja
|
|
15921
|
-
"fr": "Indique si le produit contient des aimants permanents
|
|
15922
|
-
"ga": "Cé acu atá nó nach bhfuil maighnéid bhuana
|
|
15923
|
-
"hr": "Sadržava li proizvod trajne magnete
|
|
15924
|
-
"hu": "Tartalmaz-e a termék
|
|
15925
|
-
"it": "Indica se il prodotto contiene magneti permanenti
|
|
15926
|
-
"lt": "Ar produkte yra nuolatinių
|
|
15927
|
-
"lv": "Vai produkts satur pastāvīgos magnētus
|
|
15928
|
-
"mt": "Jekk il-prodott fihx kalamiti permanenti
|
|
15929
|
-
"nl": "Of het product permanente magneten
|
|
15930
|
-
"pl": "Czy produkt zawiera magnesy trwałe
|
|
15931
|
-
"pt": "Indica se o produto contém ímanes permanentes
|
|
15932
|
-
"ro": "Indică dacă produsul conține magneți permanenți
|
|
15933
|
-
"sk": "Či výrobok obsahuje permanentné magnety
|
|
15934
|
-
"sl": "Ali izdelek vsebuje trajne magnete
|
|
15935
|
-
"sv": "Om produkten innehåller permanentmagneter
|
|
15912
|
+
"en": "Whether the product contains permanent magnets",
|
|
15913
|
+
"bg": "Дали продуктът съдържа постоянни магнити",
|
|
15914
|
+
"de": "Ob das Produkt Permanentmagnete enthält",
|
|
15915
|
+
"cs": "Zda výrobek obsahuje permanentní magnety",
|
|
15916
|
+
"da": "Om produktet indeholder permanente magneter",
|
|
15917
|
+
"el": "Εάν το προϊόν περιέχει μόνιμους μαγνήτες",
|
|
15918
|
+
"es": "Indica si el producto contiene imanes permanentes",
|
|
15919
|
+
"et": "Kas toode sisaldab püsimagneteid",
|
|
15920
|
+
"fi": "Sisältääkö tuote kestomagneetteja",
|
|
15921
|
+
"fr": "Indique si le produit contient des aimants permanents",
|
|
15922
|
+
"ga": "Cé acu atá nó nach bhfuil maighnéid bhuana sa táirge",
|
|
15923
|
+
"hr": "Sadržava li proizvod trajne magnete",
|
|
15924
|
+
"hu": "Tartalmaz-e a termék állandó mágneseket",
|
|
15925
|
+
"it": "Indica se il prodotto contiene magneti permanenti",
|
|
15926
|
+
"lt": "Ar produkte yra nuolatinių magnetų",
|
|
15927
|
+
"lv": "Vai produkts satur pastāvīgos magnētus",
|
|
15928
|
+
"mt": "Jekk il-prodott fihx kalamiti permanenti",
|
|
15929
|
+
"nl": "Of het product permanente magneten bevat",
|
|
15930
|
+
"pl": "Czy produkt zawiera magnesy trwałe",
|
|
15931
|
+
"pt": "Indica se o produto contém ímanes permanentes",
|
|
15932
|
+
"ro": "Indică dacă produsul conține magneți permanenți",
|
|
15933
|
+
"sk": "Či výrobok obsahuje permanentné magnety",
|
|
15934
|
+
"sl": "Ali izdelek vsebuje trajne magnete",
|
|
15935
|
+
"sv": "Om produkten innehåller permanentmagneter"
|
|
15936
15936
|
},
|
|
15937
15937
|
"dataType": "boolean",
|
|
15938
15938
|
"unit": null,
|
package/templates/packaging.json
CHANGED
|
@@ -31,11 +31,9 @@
|
|
|
31
31
|
"regulation": {
|
|
32
32
|
"name": "Packaging and Packaging Waste Regulation",
|
|
33
33
|
"number": "(EU) 2025/40",
|
|
34
|
-
"effectiveDate": "
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"mandatoryDatePrecision": "year",
|
|
38
|
-
"dateBasis": "indicative"
|
|
34
|
+
"effectiveDate": "9999-12-31",
|
|
35
|
+
"mandatoryDate": "9999-12-31",
|
|
36
|
+
"dateBasis": "none"
|
|
39
37
|
},
|
|
40
38
|
"fields": [
|
|
41
39
|
{
|
package/templates/steel.json
CHANGED
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"regulation": {
|
|
32
32
|
"name": "EU ESPR - Iron, Steel & Aluminium",
|
|
33
33
|
"number": "(EU) 2024/1781",
|
|
34
|
-
"effectiveDate": "
|
|
34
|
+
"effectiveDate": "2028-01-01",
|
|
35
35
|
"datePrecision": "year",
|
|
36
|
-
"mandatoryDate": "
|
|
36
|
+
"mandatoryDate": "2029-01-01",
|
|
37
37
|
"mandatoryDatePrecision": "year",
|
|
38
38
|
"dateBasis": "indicative"
|
|
39
39
|
},
|