@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,2011 @@
1
+ {
2
+ "id": "textile",
3
+ "version": 3,
4
+ "profile": "textile@3",
5
+ "status": "candidate successor to textile@2: opt-in by explicit version until the reviewed cutover",
6
+ "manifestVersion": "2",
7
+ "succession": {
8
+ "of": "textile@2",
9
+ "migration": [
10
+ {
11
+ "from": "name",
12
+ "outcome": "unchanged",
13
+ "note": "carried unchanged; requirement status enacted"
14
+ },
15
+ {
16
+ "from": "category",
17
+ "outcome": "unchanged",
18
+ "note": "carried unchanged; requirement status enacted"
19
+ },
20
+ {
21
+ "from": "modelIdentifier",
22
+ "outcome": "unchanged",
23
+ "note": "carried unchanged; requirement status enacted"
24
+ },
25
+ {
26
+ "from": "batch",
27
+ "outcome": "unchanged",
28
+ "note": "carried unchanged; requirement status enacted"
29
+ },
30
+ {
31
+ "from": "gtin",
32
+ "outcome": "unchanged",
33
+ "note": "carried unchanged; requirement status anticipated"
34
+ },
35
+ {
36
+ "from": "manufacturer",
37
+ "outcome": "unchanged",
38
+ "note": "carried unchanged; requirement status enacted"
39
+ },
40
+ {
41
+ "from": "manufacturerContact",
42
+ "outcome": "unchanged",
43
+ "note": "carried unchanged; requirement status enacted"
44
+ },
45
+ {
46
+ "from": "operatorId",
47
+ "outcome": "relabelled",
48
+ "note": "carried unchanged with awaitingAct; requirement status anticipated, so it is never schema-required and never counted missing"
49
+ },
50
+ {
51
+ "from": "manufacturingPlace",
52
+ "outcome": "unchanged",
53
+ "note": "carried unchanged; requirement status enacted"
54
+ },
55
+ {
56
+ "from": "made",
57
+ "outcome": "unchanged",
58
+ "note": "carried unchanged; requirement status anticipated"
59
+ },
60
+ {
61
+ "from": "colour",
62
+ "outcome": "unchanged",
63
+ "note": "carried unchanged; requirement status none"
64
+ },
65
+ {
66
+ "from": "size",
67
+ "outcome": "unchanged",
68
+ "note": "carried unchanged; requirement status none"
69
+ },
70
+ {
71
+ "from": "weight",
72
+ "outcome": "unchanged",
73
+ "note": "carried unchanged; requirement status anticipated"
74
+ },
75
+ {
76
+ "from": "fibres",
77
+ "outcome": "unchanged",
78
+ "note": "carried unchanged as the whole-product composition; components and componentFibres carry the composition per component"
79
+ },
80
+ {
81
+ "from": "nonTextileParts",
82
+ "outcome": "unchanged",
83
+ "note": "carried unchanged; requirement status enacted"
84
+ },
85
+ {
86
+ "from": "recycledContent",
87
+ "outcome": "unchanged",
88
+ "note": "carried unchanged as the model-level declared share; recycledContentAssessment is the method-qualified companion"
89
+ },
90
+ {
91
+ "from": "biobasedContent",
92
+ "outcome": "unchanged",
93
+ "note": "carried unchanged; requirement status none"
94
+ },
95
+ {
96
+ "from": "trims",
97
+ "outcome": "unchanged",
98
+ "note": "carried unchanged; requirement status anticipated"
99
+ },
100
+ {
101
+ "from": "substancesOfConcern",
102
+ "outcome": "unchanged",
103
+ "note": "carried unchanged; requirement status anticipated"
104
+ },
105
+ {
106
+ "from": "substanceStatement",
107
+ "outcome": "unchanged",
108
+ "note": "carried unchanged as the default-language text; substanceStatementLocalised is the language-tagged companion"
109
+ },
110
+ {
111
+ "from": "chemicalCompliance",
112
+ "outcome": "unchanged",
113
+ "note": "carried unchanged; requirement status enacted"
114
+ },
115
+ {
116
+ "from": "microplasticRelease",
117
+ "outcome": "relabelled",
118
+ "note": "carried unchanged with awaitingAct; requirement status anticipated, so it is never schema-required and never counted missing"
119
+ },
120
+ {
121
+ "from": "care",
122
+ "outcome": "unchanged",
123
+ "note": "carried unchanged; requirement status enacted"
124
+ },
125
+ {
126
+ "from": "careNote",
127
+ "outcome": "unchanged",
128
+ "note": "carried unchanged as the default-language text; careNoteLocalised is the language-tagged companion"
129
+ },
130
+ {
131
+ "from": "expectedLifetime",
132
+ "outcome": "unchanged",
133
+ "note": "carried unchanged; requirement status enacted"
134
+ },
135
+ {
136
+ "from": "washCycles",
137
+ "outcome": "unchanged",
138
+ "note": "carried unchanged; requirement status anticipated"
139
+ },
140
+ {
141
+ "from": "colourFastness",
142
+ "outcome": "unchanged",
143
+ "note": "carried unchanged; requirement status anticipated"
144
+ },
145
+ {
146
+ "from": "dimensionalStability",
147
+ "outcome": "unchanged",
148
+ "note": "carried unchanged; requirement status anticipated"
149
+ },
150
+ {
151
+ "from": "pillingResistance",
152
+ "outcome": "unchanged",
153
+ "note": "carried unchanged; requirement status anticipated"
154
+ },
155
+ {
156
+ "from": "guarantee",
157
+ "outcome": "unchanged",
158
+ "note": "carried unchanged as the guarantee term in months; the companion warrantyTerms carries the calendar rule an item expiry is derived under"
159
+ },
160
+ {
161
+ "from": "repairability",
162
+ "outcome": "relabelled",
163
+ "note": "carried unchanged with awaitingAct; requirement status anticipated, so it is never schema-required and never counted missing"
164
+ },
165
+ {
166
+ "from": "spareParts",
167
+ "outcome": "unchanged",
168
+ "note": "carried unchanged; requirement status anticipated"
169
+ },
170
+ {
171
+ "from": "repairInstructions",
172
+ "outcome": "unchanged",
173
+ "note": "carried unchanged; requirement status anticipated"
174
+ },
175
+ {
176
+ "from": "repairServices",
177
+ "outcome": "unchanged",
178
+ "note": "carried unchanged; requirement status needs-review"
179
+ },
180
+ {
181
+ "from": "carbonFootprint",
182
+ "outcome": "unchanged",
183
+ "note": "carried unchanged; requirement status anticipated"
184
+ },
185
+ {
186
+ "from": "carbonFootprintStudy",
187
+ "outcome": "unchanged",
188
+ "note": "carried unchanged; requirement status anticipated"
189
+ },
190
+ {
191
+ "from": "footprintClass",
192
+ "outcome": "relabelled",
193
+ "note": "carried unchanged with awaitingAct; requirement status anticipated, so it is never schema-required and never counted missing"
194
+ },
195
+ {
196
+ "from": "waterUse",
197
+ "outcome": "unchanged",
198
+ "note": "carried unchanged; requirement status anticipated"
199
+ },
200
+ {
201
+ "from": "collection",
202
+ "outcome": "unchanged",
203
+ "note": "carried unchanged; requirement status enacted"
204
+ },
205
+ {
206
+ "from": "recyclability",
207
+ "outcome": "unchanged",
208
+ "note": "carried unchanged; requirement status anticipated"
209
+ },
210
+ {
211
+ "from": "separability",
212
+ "outcome": "unchanged",
213
+ "note": "carried unchanged; requirement status anticipated"
214
+ },
215
+ {
216
+ "from": "eprRegistration",
217
+ "outcome": "unchanged",
218
+ "note": "carried unchanged; requirement status anticipated"
219
+ },
220
+ {
221
+ "from": "supplyChain",
222
+ "outcome": "unchanged",
223
+ "note": "carried unchanged; requirement status anticipated"
224
+ },
225
+ {
226
+ "from": "certifications",
227
+ "outcome": "unchanged",
228
+ "note": "carried unchanged as the declared list of schemes; certificationEvidence carries the certificate, its validity and its verification result"
229
+ },
230
+ {
231
+ "from": "dueDiligence",
232
+ "outcome": "unchanged",
233
+ "note": "carried unchanged; requirement status anticipated"
234
+ },
235
+ {
236
+ "from": "provenance",
237
+ "outcome": "unchanged",
238
+ "note": "carried unchanged; requirement status none"
239
+ },
240
+ {
241
+ "from": "purchase",
242
+ "outcome": "unchanged",
243
+ "note": "carried unchanged; requirement status none"
244
+ },
245
+ {
246
+ "from": "personalisation",
247
+ "outcome": "unchanged",
248
+ "note": "carried unchanged; requirement status none"
249
+ },
250
+ {
251
+ "from": "warrantyRegistration",
252
+ "outcome": "unchanged",
253
+ "note": "carried unchanged; requirement status none"
254
+ },
255
+ {
256
+ "from": "components",
257
+ "outcome": "new",
258
+ "note": "One entry per component of the product, named once here and referenced by componentFibres, substancesOfConcern.location and certificationEvidence.subject.componentRef."
259
+ },
260
+ {
261
+ "from": "componentFibres",
262
+ "outcome": "new",
263
+ "note": "Regulation (EU) 1007/2011 Articles 5, 9 and 14 read per component; ESPR Annex I"
264
+ },
265
+ {
266
+ "from": "recycledContentAssessment",
267
+ "outcome": "new",
268
+ "note": "The measurement shape keeps a physical recycled share apart from a mass-balance claim through its basis and method; recycledContent stays the declared scalar."
269
+ },
270
+ {
271
+ "from": "certificationEvidence",
272
+ "outcome": "new",
273
+ "note": "Dir. (EU) 2024/825 Art. 2: the certification behind a sustainability label, as evidence"
274
+ },
275
+ {
276
+ "from": "relatedDocuments",
277
+ "outcome": "new",
278
+ "note": "none: documents a value points at, with their access policy and, where retained, their digest"
279
+ },
280
+ {
281
+ "from": "microfibreReleaseAssessment",
282
+ "outcome": "new",
283
+ "note": "ESPR Annex I(k): microplastic and microfibre release, by a named method"
284
+ },
285
+ {
286
+ "from": "repairabilityAssessment",
287
+ "outcome": "new",
288
+ "note": "ESPR Annex I(c) and Art. 7(2)(b)(iii): a repairability assessment under a named method"
289
+ },
290
+ {
291
+ "from": "warrantyTerms",
292
+ "outcome": "new",
293
+ "note": "Dir. (EU) 2024/825: a commercial guarantee of durability states its term and what it counts from"
294
+ },
295
+ {
296
+ "from": "careNoteLocalised",
297
+ "outcome": "new",
298
+ "note": "careNote stays the default-language text; a reader selects the exact language, then the base language, then the default, and never rewrites a value."
299
+ },
300
+ {
301
+ "from": "substanceStatementLocalised",
302
+ "outcome": "new",
303
+ "note": "ESPR Art. 9(2)(b): the substance statement in each language it was supplied in"
304
+ },
305
+ {
306
+ "from": "inapplicableFields",
307
+ "outcome": "new",
308
+ "note": "A declaration is an assertion by the declaring party under the record's authorisation; it is shown beside the field it concerns and is never read as the field's value."
309
+ }
310
+ ]
311
+ },
312
+ "regulatoryLine": "Mapped to the ESPR passport requirements (Reg. (EU) 2024/1781 Art. 9 and Annex III) and binding EU textile labelling law (Reg. (EU) 1007/2011), ready to absorb the textile delegated act when adopted.",
313
+ "note": "The successor to textile@2 under manifest version 2, published as a draft that a deployment selects by explicit version. Every field carries a requirement status separate from the profile's own obligation: enacted for the binding labelling, consumer and waste law that names it, anticipated for every ESPR parameter until the textile delegated act is adopted, needs-review where only a recital could be cited, and none for the profile's own additions. Composition and evidence can be declared per component, assessments carry the method they were made by, a certificate is evidence with a verification result rather than a name, documents are references with an access policy, and prose fields have language-tagged companions. No universal repairability score, microfibre method or certification scheme is mandated. Every byte of textile@2 and of its generated files is unchanged; the migration outcome of every field is in succession.",
314
+ "sources": [
315
+ "Regulation (EU) 2024/1781 (ESPR): Art. 4 and Annex I for the product parameters, Art. 9 and Annex III for passport contents, Art. 7(5) for substances of concern",
316
+ "European Commission, textile and apparel digital product passport page, retrieved 6 September 2026 (SHA-256 c40001fdab9a33f65353e11678e64e736f3209a9dbb04625cef24d12135683b0)",
317
+ "Regulation (EC) 1907/2006 (REACH), Article 33: information on substances of very high concern in articles",
318
+ "Directive (EU) 2024/1760 on corporate sustainability due diligence",
319
+ "Regulation (EU) 1007/2011 on textile fibre names and labelling: binding today, and the source of the fibre composition and animal-origin declarations",
320
+ "Directive (EU) 2024/825 on empowering consumers: durability and reparability claims",
321
+ "Directive 2008/98/EC as amended: textile extended producer responsibility and separate collection",
322
+ "ISO 3758, ISO 5077, ISO 6330, ISO 12945 and the ISO 105 series, for the test methods the performance values are measured by"
323
+ ],
324
+ "registers": [
325
+ {
326
+ "prefix": "iso3166",
327
+ "name": "ISO 3166-1 alpha-2",
328
+ "reference": "ISO 3166-1",
329
+ "use": "Every value typed country. Officially assigned codes only; user-assigned and exceptionally-reserved codes are excluded so a passport cannot name a place no register resolves.",
330
+ "fields": [
331
+ "manufacturingPlace.country",
332
+ "supplyChain.country",
333
+ "trims.origin"
334
+ ]
335
+ }
336
+ ],
337
+ "conventions": {
338
+ "resolved": "Constraints are resolved, not implied: a percent field carries minimum 0 and maximum 100 explicitly, and a country field carries its pattern. No type-specific defaults need reapplying.",
339
+ "closed": "closed:true means options are exhaustive and a value outside them is invalid. closed:false means the list is what is known in practice and a value outside it is valid, because the source names no exhaustive vocabulary. A field with options and no closed key is closed.",
340
+ "awaitingAct": "awaitingAct names a delegated or implementing act that will fix this value's permitted form. Until it is adopted no list or pattern is stated, because stating one would publish a guess as a standard. Do not reject values on this field.",
341
+ "prose": "prose:true marks a value that is meant to be written for a person to read. It is a deliberate per-field decision, not an absent constraint.",
342
+ "record": "type:record carries fields describing its parts. With repeat:true the value is an array of such records; without, a single one."
343
+ },
344
+ "fields": [
345
+ {
346
+ "key": "name",
347
+ "label": "Product name",
348
+ "obligation": "must",
349
+ "access": "public",
350
+ "level": "model",
351
+ "type": "text",
352
+ "prose": true,
353
+ "onLabel": true,
354
+ "group": "identification",
355
+ "source": "form",
356
+ "legalRef": "ESPR Annex III(a); the passport has to say what the product is",
357
+ "supersedes": "name",
358
+ "note": "The name the brand sells it under, written by a person for a person.",
359
+ "requirement": {
360
+ "status": "enacted",
361
+ "source": "eu-espr",
362
+ "clause": "Annex III(a)",
363
+ "note": "the framework is in force; the delegated act will fix the exact form"
364
+ }
365
+ },
366
+ {
367
+ "key": "category",
368
+ "label": "Kind of product",
369
+ "obligation": "must",
370
+ "access": "public",
371
+ "level": "model",
372
+ "type": "enum",
373
+ "options": [
374
+ {
375
+ "value": "apparel",
376
+ "label": "Clothing"
377
+ },
378
+ {
379
+ "value": "footwear",
380
+ "label": "Footwear"
381
+ },
382
+ {
383
+ "value": "home",
384
+ "label": "Home textile"
385
+ },
386
+ {
387
+ "value": "accessory",
388
+ "label": "Accessory"
389
+ }
390
+ ],
391
+ "closed": false,
392
+ "group": "identification",
393
+ "source": "form",
394
+ "legalRef": "ESPR Art. 4; the parameters that apply depend on what the product is",
395
+ "note": "Open: ESPR scope for textiles is set by the delegated act, so a closed list would be our guess wearing the regulation’s clothes.",
396
+ "requirement": {
397
+ "status": "enacted",
398
+ "source": "eu-espr",
399
+ "clause": "Article 4",
400
+ "note": "the framework is in force; the delegated act will fix the exact form"
401
+ }
402
+ },
403
+ {
404
+ "key": "modelIdentifier",
405
+ "label": "Model or style reference",
406
+ "obligation": "must",
407
+ "access": "public",
408
+ "level": "model",
409
+ "type": "id",
410
+ "maxLength": 64,
411
+ "group": "identification",
412
+ "source": "form",
413
+ "legalRef": "ESPR Annex III(b): the unique product identifier is model-level",
414
+ "requirement": {
415
+ "status": "enacted",
416
+ "source": "eu-espr",
417
+ "clause": "Annex III(b)",
418
+ "note": "the framework is in force; the delegated act will fix the exact form"
419
+ }
420
+ },
421
+ {
422
+ "key": "batch",
423
+ "label": "Batch",
424
+ "obligation": "must",
425
+ "access": "public",
426
+ "level": "batch",
427
+ "type": "id",
428
+ "maxLength": 64,
429
+ "group": "identification",
430
+ "source": "form",
431
+ "legalRef": "ESPR Annex III(b); Reg. 1007/2011 traceability of a labelled lot",
432
+ "supersedes": "batch",
433
+ "requirement": {
434
+ "status": "enacted",
435
+ "source": "eu-espr",
436
+ "clause": "Annex III(b); Regulation (EU) 1007/2011",
437
+ "note": "the framework is in force; the delegated act will fix the granularity"
438
+ }
439
+ },
440
+ {
441
+ "key": "gtin",
442
+ "label": "Article number (GTIN)",
443
+ "obligation": "should",
444
+ "access": "public",
445
+ "level": "model",
446
+ "type": "id",
447
+ "pattern": "^\\d{8}$|^\\d{12,14}$",
448
+ "patternHint": "8, 12, 13 or 14 digits",
449
+ "group": "identification",
450
+ "source": "form",
451
+ "legalRef": "ESPR Annex III(c): commodity and trade item codes where they exist",
452
+ "requirement": {
453
+ "status": "anticipated",
454
+ "source": "eu-espr",
455
+ "clause": "Annex III(c)",
456
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
457
+ }
458
+ },
459
+ {
460
+ "key": "manufacturer",
461
+ "label": "Brand name",
462
+ "obligation": "must",
463
+ "access": "public",
464
+ "level": "model",
465
+ "type": "text",
466
+ "prose": true,
467
+ "onLabel": true,
468
+ "group": "identification",
469
+ "source": "brand",
470
+ "legalRef": "ESPR Annex III(e); Reg. 1007/2011 Art. 15 identifies the responsible operator",
471
+ "supersedes": "manufacturer",
472
+ "note": "A company name; nothing to constrain it to but itself.",
473
+ "requirement": {
474
+ "status": "enacted",
475
+ "source": "eu-1007-2011",
476
+ "clause": "Article 15; ESPR Annex III(e)"
477
+ }
478
+ },
479
+ {
480
+ "key": "manufacturerContact",
481
+ "label": "Brand contact",
482
+ "obligation": "must",
483
+ "access": "public",
484
+ "level": "model",
485
+ "type": "text",
486
+ "prose": true,
487
+ "group": "identification",
488
+ "source": "brand",
489
+ "legalRef": "ESPR Annex III(e): the operator has to be reachable, not merely named",
490
+ "supersedes": "manufacturerContact",
491
+ "note": "An email, a postal address or a page. Constraining it to one shape would exclude the others.",
492
+ "requirement": {
493
+ "status": "enacted",
494
+ "source": "eu-espr",
495
+ "clause": "Annex III(e)",
496
+ "note": "the framework is in force; the delegated act will fix the exact form"
497
+ }
498
+ },
499
+ {
500
+ "key": "operatorId",
501
+ "label": "EU operator identifier",
502
+ "obligation": "should",
503
+ "access": "public",
504
+ "level": "model",
505
+ "type": "id",
506
+ "awaitingAct": "the ESPR implementing act on unique operator identifiers",
507
+ "group": "identification",
508
+ "source": "deferred",
509
+ "legalRef": "ESPR Annex III(e)",
510
+ "note": "Declared and not captured: the identifier scheme does not exist yet, so an empty box would invite a made-up value.",
511
+ "requirement": {
512
+ "status": "anticipated",
513
+ "source": "eu-espr",
514
+ "clause": "Annex III(e)",
515
+ "note": "waits on the implementing act on unique operator identifiers"
516
+ }
517
+ },
518
+ {
519
+ "key": "manufacturingPlace",
520
+ "label": "Where it was made",
521
+ "obligation": "must",
522
+ "access": "public",
523
+ "level": "model",
524
+ "type": "record",
525
+ "fields": [
526
+ {
527
+ "key": "city",
528
+ "label": "Town or city",
529
+ "type": "text",
530
+ "required": true
531
+ },
532
+ {
533
+ "key": "country",
534
+ "label": "Country",
535
+ "type": "country",
536
+ "pattern": "^[A-Z]{2}$",
537
+ "patternHint": "a two-letter country code",
538
+ "required": true
539
+ }
540
+ ],
541
+ "group": "identification",
542
+ "source": "form",
543
+ "legalRef": "Reg. 1007/2011 Art. 16 read with the Union Customs Code origin rules",
544
+ "supersedes": "origin",
545
+ "requirement": {
546
+ "status": "enacted",
547
+ "source": "eu-1007-2011",
548
+ "clause": "Article 16, read with the Union Customs Code"
549
+ }
550
+ },
551
+ {
552
+ "key": "made",
553
+ "label": "Made",
554
+ "obligation": "should",
555
+ "access": "public",
556
+ "level": "batch",
557
+ "type": "monthYear",
558
+ "group": "identification",
559
+ "source": "form",
560
+ "legalRef": "ESPR Annex I(a): a durability claim is meaningless without a start date",
561
+ "requirement": {
562
+ "status": "anticipated",
563
+ "source": "eu-espr",
564
+ "clause": "Annex I(a)",
565
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
566
+ },
567
+ "precision": "month"
568
+ },
569
+ {
570
+ "key": "colour",
571
+ "label": "Colour",
572
+ "obligation": "should",
573
+ "access": "public",
574
+ "level": "model",
575
+ "type": "text",
576
+ "maxLength": 60,
577
+ "prose": true,
578
+ "group": "identification",
579
+ "source": "form",
580
+ "legalRef": "Nothing requires this. It identifies the item to the person holding it.",
581
+ "note": "Brands name colours, and the name is part of the product.",
582
+ "requirement": {
583
+ "status": "none",
584
+ "source": "profile addition",
585
+ "note": "nothing requires this"
586
+ }
587
+ },
588
+ {
589
+ "key": "size",
590
+ "label": "Size",
591
+ "obligation": "should",
592
+ "access": "public",
593
+ "level": "item",
594
+ "type": "text",
595
+ "maxLength": 32,
596
+ "prose": true,
597
+ "group": "identification",
598
+ "source": "form",
599
+ "legalRef": "Nothing requires this. It is what makes a passport match the garment in hand.",
600
+ "note": "Size systems differ by market and by brand; a closed list would be wrong somewhere.",
601
+ "requirement": {
602
+ "status": "none",
603
+ "source": "profile addition",
604
+ "note": "nothing requires this"
605
+ }
606
+ },
607
+ {
608
+ "key": "weight",
609
+ "label": "Weight",
610
+ "obligation": "should",
611
+ "access": "public",
612
+ "level": "model",
613
+ "type": "decimal",
614
+ "unit": "g",
615
+ "minimum": 1,
616
+ "maximum": 50000,
617
+ "step": 1,
618
+ "group": "identification",
619
+ "source": "form",
620
+ "legalRef": "ESPR Annex I(l): resource use, and the basis of every per-mass figure below",
621
+ "requirement": {
622
+ "status": "anticipated",
623
+ "source": "eu-espr",
624
+ "clause": "Annex I(l)",
625
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
626
+ }
627
+ },
628
+ {
629
+ "key": "fibres",
630
+ "label": "Fibre composition",
631
+ "obligation": "must",
632
+ "access": "public",
633
+ "level": "model",
634
+ "type": "record",
635
+ "fields": [
636
+ {
637
+ "key": "fibre",
638
+ "label": "Fibre",
639
+ "type": "enum",
640
+ "options": [
641
+ {
642
+ "value": "wool",
643
+ "label": "Wool"
644
+ },
645
+ {
646
+ "value": "cotton",
647
+ "label": "Cotton"
648
+ },
649
+ {
650
+ "value": "linen",
651
+ "label": "Linen (flax)"
652
+ },
653
+ {
654
+ "value": "silk",
655
+ "label": "Silk"
656
+ },
657
+ {
658
+ "value": "hemp",
659
+ "label": "Hemp"
660
+ },
661
+ {
662
+ "value": "cashmere",
663
+ "label": "Cashmere"
664
+ },
665
+ {
666
+ "value": "mohair",
667
+ "label": "Mohair"
668
+ },
669
+ {
670
+ "value": "alpaca",
671
+ "label": "Alpaca"
672
+ },
673
+ {
674
+ "value": "viscose",
675
+ "label": "Viscose"
676
+ },
677
+ {
678
+ "value": "lyocell",
679
+ "label": "Lyocell"
680
+ },
681
+ {
682
+ "value": "modal",
683
+ "label": "Modal"
684
+ },
685
+ {
686
+ "value": "cupro",
687
+ "label": "Cupro"
688
+ },
689
+ {
690
+ "value": "acetate",
691
+ "label": "Acetate"
692
+ },
693
+ {
694
+ "value": "polyester",
695
+ "label": "Polyester"
696
+ },
697
+ {
698
+ "value": "polyamide",
699
+ "label": "Polyamide (nylon)"
700
+ },
701
+ {
702
+ "value": "elastane",
703
+ "label": "Elastane"
704
+ },
705
+ {
706
+ "value": "acrylic",
707
+ "label": "Acrylic"
708
+ },
709
+ {
710
+ "value": "polypropylene",
711
+ "label": "Polypropylene"
712
+ }
713
+ ],
714
+ "closed": false,
715
+ "required": true
716
+ },
717
+ {
718
+ "key": "percent",
719
+ "label": "Share by weight",
720
+ "type": "percent",
721
+ "unit": "%",
722
+ "minimum": 0,
723
+ "maximum": 100,
724
+ "required": true
725
+ },
726
+ {
727
+ "key": "source",
728
+ "label": "Source",
729
+ "type": "enum",
730
+ "options": [
731
+ {
732
+ "value": "preConsumer",
733
+ "label": "Pre-consumer recycled"
734
+ },
735
+ {
736
+ "value": "postConsumer",
737
+ "label": "Post-consumer recycled"
738
+ },
739
+ {
740
+ "value": "virgin",
741
+ "label": "Virgin"
742
+ }
743
+ ],
744
+ "closed": true
745
+ }
746
+ ],
747
+ "repeat": true,
748
+ "onLabel": true,
749
+ "group": "composition",
750
+ "source": "form",
751
+ "legalRef": "Reg. (EU) 1007/2011 Art. 5, 9 and 14: binding today, by weight, in descending order",
752
+ "supersedes": "fibres",
753
+ "requirement": {
754
+ "status": "enacted",
755
+ "source": "eu-1007-2011",
756
+ "clause": "Articles 5, 9 and 14"
757
+ }
758
+ },
759
+ {
760
+ "key": "nonTextileParts",
761
+ "label": "Non-textile parts of animal origin",
762
+ "obligation": "must",
763
+ "access": "public",
764
+ "level": "model",
765
+ "type": "text",
766
+ "maxLength": 200,
767
+ "prose": true,
768
+ "conditional": "the product contains non-textile parts of animal origin",
769
+ "onLabel": true,
770
+ "group": "composition",
771
+ "source": "form",
772
+ "legalRef": "Reg. (EU) 1007/2011 Art. 12: mandatory where such parts are present",
773
+ "note": "The regulation asks for a phrase, not a code: \"contains non-textile parts of animal origin\".",
774
+ "requirement": {
775
+ "status": "enacted",
776
+ "source": "eu-1007-2011",
777
+ "clause": "Article 12",
778
+ "note": "mandatory where non-textile parts of animal origin are present; the applicability stays needs-review"
779
+ }
780
+ },
781
+ {
782
+ "key": "recycledContent",
783
+ "label": "Recycled content",
784
+ "obligation": "should",
785
+ "access": "public",
786
+ "level": "model",
787
+ "type": "percent",
788
+ "unit": "%",
789
+ "minimum": 0,
790
+ "maximum": 100,
791
+ "group": "composition",
792
+ "source": "form",
793
+ "legalRef": "ESPR Annex I(g): recycled content is a named parameter; the threshold waits on the act",
794
+ "supersedes": "recycled",
795
+ "requirement": {
796
+ "status": "anticipated",
797
+ "source": "eu-espr",
798
+ "clause": "Annex I(g)",
799
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
800
+ }
801
+ },
802
+ {
803
+ "key": "biobasedContent",
804
+ "label": "Bio-based content",
805
+ "obligation": "nice",
806
+ "access": "public",
807
+ "level": "model",
808
+ "type": "percent",
809
+ "unit": "%",
810
+ "minimum": 0,
811
+ "maximum": 100,
812
+ "group": "composition",
813
+ "source": "form",
814
+ "legalRef": "Nothing requires this. Declared where a brand can substantiate it.",
815
+ "requirement": {
816
+ "status": "none",
817
+ "source": "profile addition",
818
+ "note": "nothing requires this"
819
+ }
820
+ },
821
+ {
822
+ "key": "trims",
823
+ "label": "Trims and hardware",
824
+ "obligation": "should",
825
+ "access": "public",
826
+ "level": "model",
827
+ "type": "record",
828
+ "fields": [
829
+ {
830
+ "key": "part",
831
+ "label": "Part",
832
+ "type": "text",
833
+ "required": true
834
+ },
835
+ {
836
+ "key": "material",
837
+ "label": "Material",
838
+ "type": "text",
839
+ "required": true
840
+ },
841
+ {
842
+ "key": "origin",
843
+ "label": "Country",
844
+ "type": "country",
845
+ "pattern": "^[A-Z]{2}$",
846
+ "patternHint": "a two-letter country code"
847
+ }
848
+ ],
849
+ "repeat": true,
850
+ "group": "composition",
851
+ "source": "form",
852
+ "legalRef": "ESPR Annex I(d) and (n): what separates for repair, and what separates for recycling",
853
+ "requirement": {
854
+ "status": "anticipated",
855
+ "source": "eu-espr",
856
+ "clause": "Annex I(d); Annex I(n)",
857
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
858
+ }
859
+ },
860
+ {
861
+ "key": "substancesOfConcern",
862
+ "label": "Substances of concern",
863
+ "obligation": "must",
864
+ "access": "public",
865
+ "level": "model",
866
+ "type": "record",
867
+ "fields": [
868
+ {
869
+ "key": "substance",
870
+ "label": "Substance",
871
+ "type": "text",
872
+ "required": true
873
+ },
874
+ {
875
+ "key": "casNumber",
876
+ "label": "CAS number",
877
+ "type": "text",
878
+ "pattern": "^\\d{2,7}-\\d{2}-\\d$",
879
+ "patternHint": "a CAS registry number, e.g. 7440-48-4"
880
+ },
881
+ {
882
+ "key": "concentration",
883
+ "label": "Concentration",
884
+ "type": "percent",
885
+ "unit": "%",
886
+ "minimum": 0,
887
+ "maximum": 100
888
+ },
889
+ {
890
+ "key": "location",
891
+ "label": "Where in the product",
892
+ "type": "text"
893
+ }
894
+ ],
895
+ "repeat": true,
896
+ "conditional": "a substance of concern is present above the threshold the act will set",
897
+ "group": "substances",
898
+ "source": "form",
899
+ "legalRef": "ESPR Art. 7(5): substances of concern must be traceable through the passport",
900
+ "supersedes": "substances",
901
+ "requirement": {
902
+ "status": "anticipated",
903
+ "source": "eu-espr",
904
+ "clause": "Article 7(5)",
905
+ "note": "the threshold the delegated act will set is not adopted; the applicability stays needs-review"
906
+ }
907
+ },
908
+ {
909
+ "key": "substanceStatement",
910
+ "label": "What that means for you",
911
+ "obligation": "should",
912
+ "access": "public",
913
+ "level": "model",
914
+ "type": "text",
915
+ "maxLength": 400,
916
+ "prose": true,
917
+ "group": "substances",
918
+ "source": "form",
919
+ "legalRef": "ESPR Art. 9(2)(b): passport information shall be complete and comprehensible",
920
+ "note": "A list of CAS numbers tells a consumer nothing. This is the sentence that does.",
921
+ "requirement": {
922
+ "status": "anticipated",
923
+ "source": "eu-espr",
924
+ "clause": "Article 9(2)(b)",
925
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
926
+ }
927
+ },
928
+ {
929
+ "key": "chemicalCompliance",
930
+ "label": "Chemical compliance evidence",
931
+ "obligation": "should",
932
+ "access": "legitimate",
933
+ "level": "model",
934
+ "type": "document",
935
+ "group": "substances",
936
+ "source": "form",
937
+ "legalRef": "REACH Art. 33 read with ESPR Annex III(d): compliance documentation",
938
+ "requirement": {
939
+ "status": "enacted",
940
+ "source": "reach-1907-2006",
941
+ "clause": "Article 33",
942
+ "note": "REACH Article 33 is in force; the ESPR Annex III(d) reading waits on the delegated act"
943
+ }
944
+ },
945
+ {
946
+ "key": "microplasticRelease",
947
+ "label": "Microplastic release",
948
+ "obligation": "nice",
949
+ "access": "public",
950
+ "level": "model",
951
+ "type": "text",
952
+ "awaitingAct": "the harmonised test method for microfibre release",
953
+ "prose": true,
954
+ "group": "substances",
955
+ "source": "form",
956
+ "legalRef": "ESPR Annex I(k); the method is not yet fixed",
957
+ "note": "No measurement method is harmonised, so a number here would be incomparable with anyone else’s.",
958
+ "requirement": {
959
+ "status": "anticipated",
960
+ "source": "eu-espr",
961
+ "clause": "Annex I(k)",
962
+ "note": "the harmonised test method for microfibre release is not fixed"
963
+ }
964
+ },
965
+ {
966
+ "key": "care",
967
+ "label": "Care",
968
+ "obligation": "must",
969
+ "access": "public",
970
+ "level": "model",
971
+ "type": "multi",
972
+ "options": [
973
+ {
974
+ "value": "wash30",
975
+ "label": "Machine wash at 30 °C"
976
+ },
977
+ {
978
+ "value": "wash40",
979
+ "label": "Machine wash at 40 °C"
980
+ },
981
+ {
982
+ "value": "wash60",
983
+ "label": "Machine wash at 60 °C"
984
+ },
985
+ {
986
+ "value": "handWash",
987
+ "label": "Hand wash only"
988
+ },
989
+ {
990
+ "value": "noWash",
991
+ "label": "Do not wash"
992
+ },
993
+ {
994
+ "value": "noBleach",
995
+ "label": "Do not bleach"
996
+ },
997
+ {
998
+ "value": "tumbleLow",
999
+ "label": "Tumble dry low"
1000
+ },
1001
+ {
1002
+ "value": "noTumble",
1003
+ "label": "Do not tumble dry"
1004
+ },
1005
+ {
1006
+ "value": "ironLow",
1007
+ "label": "Iron low"
1008
+ },
1009
+ {
1010
+ "value": "ironMedium",
1011
+ "label": "Iron medium"
1012
+ },
1013
+ {
1014
+ "value": "noIron",
1015
+ "label": "Do not iron"
1016
+ },
1017
+ {
1018
+ "value": "dryClean",
1019
+ "label": "Professional dry clean"
1020
+ },
1021
+ {
1022
+ "value": "noDryClean",
1023
+ "label": "Do not dry clean"
1024
+ }
1025
+ ],
1026
+ "closed": true,
1027
+ "onLabel": true,
1028
+ "group": "durability",
1029
+ "source": "form",
1030
+ "legalRef": "ISO 3758 care symbols; Dir. (EU) 2024/825 Art. 2 on durability information",
1031
+ "supersedes": "care",
1032
+ "requirement": {
1033
+ "status": "enacted",
1034
+ "source": "eu-2024-825",
1035
+ "clause": "Article 2; ISO 3758 care symbols"
1036
+ }
1037
+ },
1038
+ {
1039
+ "key": "careNote",
1040
+ "label": "How to make it last",
1041
+ "obligation": "should",
1042
+ "access": "public",
1043
+ "level": "model",
1044
+ "type": "text",
1045
+ "maxLength": 400,
1046
+ "prose": true,
1047
+ "group": "durability",
1048
+ "source": "form",
1049
+ "legalRef": "ESPR Annex I(a): extending lifetime is the parameter; this is how",
1050
+ "note": "The advice a maker would give in person, which no symbol carries.",
1051
+ "requirement": {
1052
+ "status": "anticipated",
1053
+ "source": "eu-espr",
1054
+ "clause": "Annex I(a)",
1055
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1056
+ }
1057
+ },
1058
+ {
1059
+ "key": "expectedLifetime",
1060
+ "label": "Expected lifetime",
1061
+ "obligation": "should",
1062
+ "access": "public",
1063
+ "level": "model",
1064
+ "type": "integer",
1065
+ "unit": "years",
1066
+ "minimum": 1,
1067
+ "maximum": 100,
1068
+ "step": 1,
1069
+ "group": "durability",
1070
+ "source": "form",
1071
+ "legalRef": "ESPR Annex I(a) and Dir. (EU) 2024/825: a durability claim must be substantiated",
1072
+ "requirement": {
1073
+ "status": "enacted",
1074
+ "source": "eu-2024-825",
1075
+ "clause": "Article 2",
1076
+ "note": "a durability claim under the directive states its basis; the ESPR parameter reading waits on the delegated act"
1077
+ }
1078
+ },
1079
+ {
1080
+ "key": "washCycles",
1081
+ "label": "Tested to",
1082
+ "obligation": "should",
1083
+ "access": "public",
1084
+ "level": "model",
1085
+ "type": "integer",
1086
+ "unit": "wash cycles",
1087
+ "minimum": 1,
1088
+ "maximum": 1000,
1089
+ "step": 1,
1090
+ "group": "durability",
1091
+ "source": "form",
1092
+ "legalRef": "ESPR Annex I(b) reliability, tested per ISO 6330 domestic washing procedures",
1093
+ "requirement": {
1094
+ "status": "anticipated",
1095
+ "source": "eu-espr",
1096
+ "clause": "Annex I(b)",
1097
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1098
+ }
1099
+ },
1100
+ {
1101
+ "key": "colourFastness",
1102
+ "label": "Colour fastness",
1103
+ "obligation": "should",
1104
+ "access": "public",
1105
+ "level": "model",
1106
+ "type": "decimal",
1107
+ "unit": "grade",
1108
+ "minimum": 1,
1109
+ "maximum": 5,
1110
+ "step": 0.5,
1111
+ "group": "durability",
1112
+ "source": "form",
1113
+ "legalRef": "ESPR Annex I(b), graded 1-5 per the ISO 105 series",
1114
+ "requirement": {
1115
+ "status": "anticipated",
1116
+ "source": "eu-espr",
1117
+ "clause": "Annex I(b)",
1118
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1119
+ }
1120
+ },
1121
+ {
1122
+ "key": "dimensionalStability",
1123
+ "label": "Dimensional change after washing",
1124
+ "obligation": "should",
1125
+ "access": "public",
1126
+ "level": "model",
1127
+ "type": "decimal",
1128
+ "unit": "%",
1129
+ "minimum": -20,
1130
+ "maximum": 20,
1131
+ "step": 0.5,
1132
+ "group": "durability",
1133
+ "source": "form",
1134
+ "legalRef": "ESPR Annex I(b), measured per ISO 5077",
1135
+ "requirement": {
1136
+ "status": "anticipated",
1137
+ "source": "eu-espr",
1138
+ "clause": "Annex I(b)",
1139
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1140
+ }
1141
+ },
1142
+ {
1143
+ "key": "pillingResistance",
1144
+ "label": "Pilling resistance",
1145
+ "obligation": "should",
1146
+ "access": "public",
1147
+ "level": "model",
1148
+ "type": "decimal",
1149
+ "unit": "grade",
1150
+ "minimum": 1,
1151
+ "maximum": 5,
1152
+ "step": 0.5,
1153
+ "group": "durability",
1154
+ "source": "form",
1155
+ "legalRef": "ESPR Annex I(b), graded 1-5 per ISO 12945",
1156
+ "requirement": {
1157
+ "status": "anticipated",
1158
+ "source": "eu-espr",
1159
+ "clause": "Annex I(b)",
1160
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1161
+ }
1162
+ },
1163
+ {
1164
+ "key": "guarantee",
1165
+ "label": "Guarantee",
1166
+ "obligation": "should",
1167
+ "access": "public",
1168
+ "level": "model",
1169
+ "type": "integer",
1170
+ "unit": "months",
1171
+ "minimum": 0,
1172
+ "maximum": 600,
1173
+ "step": 1,
1174
+ "group": "durability",
1175
+ "source": "form",
1176
+ "legalRef": "Dir. (EU) 2024/825: a commercial guarantee of durability must state its term",
1177
+ "supersedes": "warranty",
1178
+ "requirement": {
1179
+ "status": "enacted",
1180
+ "source": "eu-2024-825",
1181
+ "clause": "Article 2"
1182
+ }
1183
+ },
1184
+ {
1185
+ "key": "repairability",
1186
+ "label": "Repairability",
1187
+ "obligation": "should",
1188
+ "access": "public",
1189
+ "level": "model",
1190
+ "type": "text",
1191
+ "maxLength": 300,
1192
+ "awaitingAct": "the ESPR delegated act on repairability scoring for textiles",
1193
+ "prose": true,
1194
+ "group": "repair",
1195
+ "source": "form",
1196
+ "legalRef": "ESPR Annex I(c) and Art. 7(2)(b)(iii)",
1197
+ "note": "The scoring class is not fixed, so a letter or a number here would be invented.",
1198
+ "requirement": {
1199
+ "status": "anticipated",
1200
+ "source": "eu-espr",
1201
+ "clause": "Annex I(c); Article 7(2)(b)(iii)",
1202
+ "note": "waits on the delegated act on repairability scoring for textiles; no score is mandated"
1203
+ }
1204
+ },
1205
+ {
1206
+ "key": "spareParts",
1207
+ "label": "Spare parts",
1208
+ "obligation": "should",
1209
+ "access": "public",
1210
+ "level": "model",
1211
+ "type": "text",
1212
+ "maxLength": 300,
1213
+ "prose": true,
1214
+ "group": "repair",
1215
+ "source": "form",
1216
+ "legalRef": "ESPR Annex I(d): availability of spare parts is a named parameter",
1217
+ "note": "Which parts, and for how long. A yes/no would hide the part that matters.",
1218
+ "requirement": {
1219
+ "status": "anticipated",
1220
+ "source": "eu-espr",
1221
+ "clause": "Annex I(d)",
1222
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1223
+ }
1224
+ },
1225
+ {
1226
+ "key": "repairInstructions",
1227
+ "label": "Repair instructions",
1228
+ "obligation": "should",
1229
+ "access": "public",
1230
+ "level": "model",
1231
+ "type": "document",
1232
+ "group": "repair",
1233
+ "source": "form",
1234
+ "legalRef": "ESPR Annex I(e): access to repair information",
1235
+ "requirement": {
1236
+ "status": "anticipated",
1237
+ "source": "eu-espr",
1238
+ "clause": "Annex I(e)",
1239
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1240
+ }
1241
+ },
1242
+ {
1243
+ "key": "repairServices",
1244
+ "label": "Where to get it repaired",
1245
+ "obligation": "should",
1246
+ "access": "public",
1247
+ "level": "model",
1248
+ "type": "url",
1249
+ "group": "repair",
1250
+ "source": "form",
1251
+ "legalRef": "Dir. (EU) 2024/825 recital 22: repair should be the visible option",
1252
+ "requirement": {
1253
+ "status": "needs-review",
1254
+ "source": "eu-2024-825",
1255
+ "clause": "recital 22",
1256
+ "note": "the basis is a recital, not an article; no article confirmed"
1257
+ }
1258
+ },
1259
+ {
1260
+ "key": "carbonFootprint",
1261
+ "label": "Carbon footprint",
1262
+ "obligation": "should",
1263
+ "access": "public",
1264
+ "level": "model",
1265
+ "type": "decimal",
1266
+ "unit": "kg CO₂e",
1267
+ "minimum": 0,
1268
+ "maximum": 10000,
1269
+ "step": 0.01,
1270
+ "group": "footprint",
1271
+ "source": "form",
1272
+ "legalRef": "ESPR Annex I(m), computed per the Apparel and Footwear PEFCR",
1273
+ "requirement": {
1274
+ "status": "anticipated",
1275
+ "source": "eu-espr",
1276
+ "clause": "Annex I(m)",
1277
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1278
+ }
1279
+ },
1280
+ {
1281
+ "key": "carbonFootprintStudy",
1282
+ "label": "The study behind the figure",
1283
+ "obligation": "should",
1284
+ "access": "public",
1285
+ "level": "model",
1286
+ "type": "document",
1287
+ "group": "footprint",
1288
+ "source": "form",
1289
+ "legalRef": "ESPR Art. 9(2)(b): a figure a reader cannot check is not information",
1290
+ "requirement": {
1291
+ "status": "anticipated",
1292
+ "source": "eu-espr",
1293
+ "clause": "Article 9(2)(b)",
1294
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1295
+ }
1296
+ },
1297
+ {
1298
+ "key": "footprintClass",
1299
+ "label": "Environmental footprint class",
1300
+ "obligation": "should",
1301
+ "access": "public",
1302
+ "level": "model",
1303
+ "type": "text",
1304
+ "maxLength": 80,
1305
+ "awaitingAct": "the ESPR delegated act setting performance classes for textiles",
1306
+ "prose": true,
1307
+ "group": "footprint",
1308
+ "source": "deferred",
1309
+ "legalRef": "ESPR Art. 7(4)",
1310
+ "note": "The class format is not set. Naming one would publish our guess as a grade.",
1311
+ "requirement": {
1312
+ "status": "anticipated",
1313
+ "source": "eu-espr",
1314
+ "clause": "Article 7(4)",
1315
+ "note": "waits on the delegated act setting performance classes for textiles"
1316
+ }
1317
+ },
1318
+ {
1319
+ "key": "waterUse",
1320
+ "label": "Water use",
1321
+ "obligation": "nice",
1322
+ "access": "public",
1323
+ "level": "model",
1324
+ "type": "decimal",
1325
+ "unit": "m³",
1326
+ "minimum": 0,
1327
+ "maximum": 100000,
1328
+ "step": 0.1,
1329
+ "group": "footprint",
1330
+ "source": "form",
1331
+ "legalRef": "ESPR Annex I(l): resource use. Declared where a brand has measured it.",
1332
+ "requirement": {
1333
+ "status": "anticipated",
1334
+ "source": "eu-espr",
1335
+ "clause": "Annex I(l)",
1336
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1337
+ }
1338
+ },
1339
+ {
1340
+ "key": "collection",
1341
+ "label": "Where to return it",
1342
+ "obligation": "must",
1343
+ "access": "public",
1344
+ "level": "model",
1345
+ "type": "text",
1346
+ "maxLength": 400,
1347
+ "prose": true,
1348
+ "group": "endOfLife",
1349
+ "source": "form",
1350
+ "legalRef": "Waste Framework Directive: separate collection of textiles since 1 January 2025",
1351
+ "supersedes": "endOfLife",
1352
+ "note": "A place and a method, in the words the person returning it will use.",
1353
+ "requirement": {
1354
+ "status": "enacted",
1355
+ "source": "eu-2008-98",
1356
+ "clause": "Article 11(1) as amended: separate collection of textiles"
1357
+ }
1358
+ },
1359
+ {
1360
+ "key": "recyclability",
1361
+ "label": "How it can be recycled",
1362
+ "obligation": "should",
1363
+ "access": "public",
1364
+ "level": "model",
1365
+ "type": "text",
1366
+ "maxLength": 400,
1367
+ "prose": true,
1368
+ "group": "endOfLife",
1369
+ "source": "form",
1370
+ "legalRef": "ESPR Annex I(n): expected generation of waste materials",
1371
+ "note": "What a recycler can actually do with it, which no percentage conveys.",
1372
+ "requirement": {
1373
+ "status": "anticipated",
1374
+ "source": "eu-espr",
1375
+ "clause": "Annex I(n)",
1376
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1377
+ }
1378
+ },
1379
+ {
1380
+ "key": "separability",
1381
+ "label": "What comes apart",
1382
+ "obligation": "should",
1383
+ "access": "legitimate",
1384
+ "level": "model",
1385
+ "type": "text",
1386
+ "maxLength": 300,
1387
+ "prose": true,
1388
+ "group": "endOfLife",
1389
+ "source": "form",
1390
+ "legalRef": "ESPR Annex I(h) and (i): ease of disassembly, for reuse and recycling",
1391
+ "note": "Which components separate, and how. The sentence a dismantler needs.",
1392
+ "requirement": {
1393
+ "status": "anticipated",
1394
+ "source": "eu-espr",
1395
+ "clause": "Annex I(h); Annex I(i)",
1396
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1397
+ }
1398
+ },
1399
+ {
1400
+ "key": "eprRegistration",
1401
+ "label": "Producer responsibility registration",
1402
+ "obligation": "should",
1403
+ "access": "authority",
1404
+ "level": "model",
1405
+ "type": "id",
1406
+ "maxLength": 64,
1407
+ "group": "endOfLife",
1408
+ "source": "brand",
1409
+ "legalRef": "Waste Framework Directive textile EPR: the producer register number",
1410
+ "requirement": {
1411
+ "status": "anticipated",
1412
+ "source": "eu-2008-98",
1413
+ "clause": "textile extended producer responsibility as amended",
1414
+ "note": "the amending directive is in force and the producer registration obligations apply from the dates it sets; no application date is recorded here"
1415
+ }
1416
+ },
1417
+ {
1418
+ "key": "supplyChain",
1419
+ "label": "Supply chain",
1420
+ "obligation": "should",
1421
+ "access": "public",
1422
+ "level": "model",
1423
+ "type": "record",
1424
+ "fields": [
1425
+ {
1426
+ "key": "stage",
1427
+ "label": "Stage",
1428
+ "type": "enum",
1429
+ "options": [
1430
+ {
1431
+ "value": "fibre",
1432
+ "label": "Fibre production"
1433
+ },
1434
+ {
1435
+ "value": "spinning",
1436
+ "label": "Spinning"
1437
+ },
1438
+ {
1439
+ "value": "weaving",
1440
+ "label": "Weaving or knitting"
1441
+ },
1442
+ {
1443
+ "value": "dyeing",
1444
+ "label": "Dyeing and finishing"
1445
+ },
1446
+ {
1447
+ "value": "assembly",
1448
+ "label": "Cutting and assembly"
1449
+ }
1450
+ ],
1451
+ "closed": true,
1452
+ "required": true
1453
+ },
1454
+ {
1455
+ "key": "country",
1456
+ "label": "Country",
1457
+ "type": "country",
1458
+ "pattern": "^[A-Z]{2}$",
1459
+ "patternHint": "a two-letter country code",
1460
+ "required": true
1461
+ },
1462
+ {
1463
+ "key": "facility",
1464
+ "label": "Facility",
1465
+ "type": "text"
1466
+ }
1467
+ ],
1468
+ "repeat": true,
1469
+ "group": "supply",
1470
+ "source": "form",
1471
+ "legalRef": "ESPR Annex III(f): unique facility identifiers, at the stages that have them",
1472
+ "requirement": {
1473
+ "status": "anticipated",
1474
+ "source": "eu-espr",
1475
+ "clause": "Annex III(f)",
1476
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1477
+ }
1478
+ },
1479
+ {
1480
+ "key": "certifications",
1481
+ "label": "Independent certification",
1482
+ "obligation": "should",
1483
+ "access": "public",
1484
+ "level": "model",
1485
+ "type": "multi",
1486
+ "options": [
1487
+ {
1488
+ "value": "gots",
1489
+ "label": "GOTS"
1490
+ },
1491
+ {
1492
+ "value": "oekoTex100",
1493
+ "label": "OEKO-TEX Standard 100"
1494
+ },
1495
+ {
1496
+ "value": "grs",
1497
+ "label": "Global Recycled Standard"
1498
+ },
1499
+ {
1500
+ "value": "rws",
1501
+ "label": "Responsible Wool Standard"
1502
+ },
1503
+ {
1504
+ "value": "euEcolabel",
1505
+ "label": "EU Ecolabel"
1506
+ },
1507
+ {
1508
+ "value": "cradleToCradle",
1509
+ "label": "Cradle to Cradle"
1510
+ },
1511
+ {
1512
+ "value": "bluesign",
1513
+ "label": "bluesign"
1514
+ }
1515
+ ],
1516
+ "closed": false,
1517
+ "group": "supply",
1518
+ "source": "form",
1519
+ "legalRef": "Dir. (EU) 2024/825 Art. 2: a sustainability label needs a certification behind it",
1520
+ "note": "Open: a closed list of schemes would read as an endorsement of exactly those.",
1521
+ "requirement": {
1522
+ "status": "enacted",
1523
+ "source": "eu-2024-825",
1524
+ "clause": "Article 2"
1525
+ }
1526
+ },
1527
+ {
1528
+ "key": "dueDiligence",
1529
+ "label": "Due diligence report",
1530
+ "obligation": "should",
1531
+ "access": "legitimate",
1532
+ "level": "model",
1533
+ "type": "document",
1534
+ "group": "supply",
1535
+ "source": "form",
1536
+ "legalRef": "Dir. (EU) 2024/1760 corporate sustainability due diligence, where in scope",
1537
+ "requirement": {
1538
+ "status": "anticipated",
1539
+ "source": "eu-2024-1760",
1540
+ "clause": "Directive (EU) 2024/1760",
1541
+ "note": "in force with deferred application dates; not recorded here as settled"
1542
+ }
1543
+ },
1544
+ {
1545
+ "key": "provenance",
1546
+ "label": "Provenance",
1547
+ "obligation": "nice",
1548
+ "access": "owner",
1549
+ "level": "item",
1550
+ "type": "text",
1551
+ "maxLength": 600,
1552
+ "prose": true,
1553
+ "group": "owner",
1554
+ "source": "form",
1555
+ "legalRef": "Nothing requires this. It is the owner tier the selective-disclosure demo turns on.",
1556
+ "supersedes": "provenance",
1557
+ "note": "The story of this particular item, which is prose by definition.",
1558
+ "requirement": {
1559
+ "status": "none",
1560
+ "source": "profile addition",
1561
+ "note": "nothing requires this; the owner tier"
1562
+ }
1563
+ },
1564
+ {
1565
+ "key": "purchase",
1566
+ "label": "Purchased",
1567
+ "obligation": "nice",
1568
+ "access": "owner",
1569
+ "level": "item",
1570
+ "type": "text",
1571
+ "maxLength": 200,
1572
+ "prose": true,
1573
+ "dynamic": true,
1574
+ "group": "owner",
1575
+ "source": "event",
1576
+ "legalRef": "Nothing requires this. It is what makes the record theirs.",
1577
+ "note": "Where and when, as the owner would write it.",
1578
+ "requirement": {
1579
+ "status": "none",
1580
+ "source": "profile addition",
1581
+ "note": "nothing requires this; the owner tier"
1582
+ }
1583
+ },
1584
+ {
1585
+ "key": "personalisation",
1586
+ "label": "Alterations and fit",
1587
+ "obligation": "nice",
1588
+ "access": "owner",
1589
+ "level": "item",
1590
+ "type": "text",
1591
+ "maxLength": 300,
1592
+ "prose": true,
1593
+ "dynamic": true,
1594
+ "group": "owner",
1595
+ "source": "event",
1596
+ "legalRef": "Nothing requires this. An altered garment is a different garment to its owner.",
1597
+ "supersedes": "personalisation",
1598
+ "note": "Sleeve lengths and hems, in the tailor’s words.",
1599
+ "requirement": {
1600
+ "status": "none",
1601
+ "source": "profile addition",
1602
+ "note": "nothing requires this; the owner tier"
1603
+ }
1604
+ },
1605
+ {
1606
+ "key": "warrantyRegistration",
1607
+ "label": "Guarantee registration",
1608
+ "obligation": "nice",
1609
+ "access": "owner",
1610
+ "level": "item",
1611
+ "type": "id",
1612
+ "maxLength": 64,
1613
+ "group": "owner",
1614
+ "source": "form",
1615
+ "legalRef": "Nothing requires this. It saves the owner keeping a receipt.",
1616
+ "requirement": {
1617
+ "status": "none",
1618
+ "source": "profile addition",
1619
+ "note": "nothing requires this; the owner tier"
1620
+ }
1621
+ },
1622
+ {
1623
+ "key": "components",
1624
+ "label": "Components",
1625
+ "obligation": "should",
1626
+ "access": "public",
1627
+ "level": "model",
1628
+ "type": "record",
1629
+ "fields": [
1630
+ {
1631
+ "key": "component",
1632
+ "label": "Component",
1633
+ "type": "text",
1634
+ "required": true
1635
+ },
1636
+ {
1637
+ "key": "role",
1638
+ "label": "Role",
1639
+ "type": "enum",
1640
+ "options": [
1641
+ {
1642
+ "value": "shell",
1643
+ "label": "Shell"
1644
+ },
1645
+ {
1646
+ "value": "lining",
1647
+ "label": "Lining"
1648
+ },
1649
+ {
1650
+ "value": "insulation",
1651
+ "label": "Insulation or padding"
1652
+ },
1653
+ {
1654
+ "value": "trim",
1655
+ "label": "Trim"
1656
+ },
1657
+ {
1658
+ "value": "fastening",
1659
+ "label": "Fastening"
1660
+ },
1661
+ {
1662
+ "value": "label",
1663
+ "label": "Label"
1664
+ },
1665
+ {
1666
+ "value": "other",
1667
+ "label": "Other"
1668
+ }
1669
+ ],
1670
+ "closed": false
1671
+ },
1672
+ {
1673
+ "key": "massShare",
1674
+ "label": "Share of product mass",
1675
+ "type": "percent",
1676
+ "unit": "%",
1677
+ "minimum": 0,
1678
+ "maximum": 100
1679
+ }
1680
+ ],
1681
+ "repeat": true,
1682
+ "group": "composition",
1683
+ "source": "form",
1684
+ "legalRef": "ESPR Annex III and Annex I: composition and evidence at the level of the component the delegated act may name",
1685
+ "note": "One entry per component of the product, named once here and referenced by componentFibres, substancesOfConcern.location and certificationEvidence.subject.componentRef.",
1686
+ "requirement": {
1687
+ "status": "anticipated",
1688
+ "source": "eu-espr",
1689
+ "clause": "Annex III; Annex I",
1690
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1691
+ },
1692
+ "scope": "component",
1693
+ "componentScoped": true
1694
+ },
1695
+ {
1696
+ "key": "componentFibres",
1697
+ "label": "Fibre composition per component",
1698
+ "obligation": "should",
1699
+ "access": "public",
1700
+ "level": "model",
1701
+ "type": "record",
1702
+ "fields": [
1703
+ {
1704
+ "key": "component",
1705
+ "label": "Component",
1706
+ "type": "text",
1707
+ "required": true
1708
+ },
1709
+ {
1710
+ "key": "fibre",
1711
+ "label": "Fibre",
1712
+ "type": "enum",
1713
+ "options": [
1714
+ {
1715
+ "value": "wool",
1716
+ "label": "Wool"
1717
+ },
1718
+ {
1719
+ "value": "cotton",
1720
+ "label": "Cotton"
1721
+ },
1722
+ {
1723
+ "value": "linen",
1724
+ "label": "Linen (flax)"
1725
+ },
1726
+ {
1727
+ "value": "silk",
1728
+ "label": "Silk"
1729
+ },
1730
+ {
1731
+ "value": "hemp",
1732
+ "label": "Hemp"
1733
+ },
1734
+ {
1735
+ "value": "cashmere",
1736
+ "label": "Cashmere"
1737
+ },
1738
+ {
1739
+ "value": "mohair",
1740
+ "label": "Mohair"
1741
+ },
1742
+ {
1743
+ "value": "alpaca",
1744
+ "label": "Alpaca"
1745
+ },
1746
+ {
1747
+ "value": "viscose",
1748
+ "label": "Viscose"
1749
+ },
1750
+ {
1751
+ "value": "lyocell",
1752
+ "label": "Lyocell"
1753
+ },
1754
+ {
1755
+ "value": "modal",
1756
+ "label": "Modal"
1757
+ },
1758
+ {
1759
+ "value": "cupro",
1760
+ "label": "Cupro"
1761
+ },
1762
+ {
1763
+ "value": "acetate",
1764
+ "label": "Acetate"
1765
+ },
1766
+ {
1767
+ "value": "polyester",
1768
+ "label": "Polyester"
1769
+ },
1770
+ {
1771
+ "value": "polyamide",
1772
+ "label": "Polyamide (nylon)"
1773
+ },
1774
+ {
1775
+ "value": "elastane",
1776
+ "label": "Elastane"
1777
+ },
1778
+ {
1779
+ "value": "acrylic",
1780
+ "label": "Acrylic"
1781
+ },
1782
+ {
1783
+ "value": "polypropylene",
1784
+ "label": "Polypropylene"
1785
+ }
1786
+ ],
1787
+ "closed": false,
1788
+ "required": true
1789
+ },
1790
+ {
1791
+ "key": "percent",
1792
+ "label": "Share by weight of the component",
1793
+ "type": "percent",
1794
+ "unit": "%",
1795
+ "minimum": 0,
1796
+ "maximum": 100,
1797
+ "required": true
1798
+ },
1799
+ {
1800
+ "key": "source",
1801
+ "label": "Source",
1802
+ "type": "enum",
1803
+ "options": [
1804
+ {
1805
+ "value": "preConsumer",
1806
+ "label": "Pre-consumer recycled"
1807
+ },
1808
+ {
1809
+ "value": "postConsumer",
1810
+ "label": "Post-consumer recycled"
1811
+ },
1812
+ {
1813
+ "value": "virgin",
1814
+ "label": "Virgin"
1815
+ }
1816
+ ],
1817
+ "closed": true
1818
+ }
1819
+ ],
1820
+ "repeat": true,
1821
+ "group": "composition",
1822
+ "source": "form",
1823
+ "legalRef": "Regulation (EU) 1007/2011 Articles 5, 9 and 14 read per component; ESPR Annex I",
1824
+ "requirement": {
1825
+ "status": "anticipated",
1826
+ "source": "eu-espr",
1827
+ "clause": "Annex I",
1828
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027; the whole-product composition under fibres stays the binding labelling declaration"
1829
+ },
1830
+ "scope": "component",
1831
+ "componentScoped": true
1832
+ },
1833
+ {
1834
+ "key": "recycledContentAssessment",
1835
+ "label": "Recycled content, assessed",
1836
+ "obligation": "nice",
1837
+ "access": "public",
1838
+ "level": "model",
1839
+ "type": "measurement",
1840
+ "unit": "%",
1841
+ "group": "composition",
1842
+ "source": "form",
1843
+ "legalRef": "ESPR Annex I(g): recycled content with its method, basis and boundary",
1844
+ "note": "The measurement shape keeps a physical recycled share apart from a mass-balance claim through its basis and method; recycledContent stays the declared scalar.",
1845
+ "requirement": {
1846
+ "status": "anticipated",
1847
+ "source": "eu-espr",
1848
+ "clause": "Annex I(g)",
1849
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1850
+ }
1851
+ },
1852
+ {
1853
+ "key": "certificationEvidence",
1854
+ "label": "Certification evidence",
1855
+ "obligation": "nice",
1856
+ "access": "public",
1857
+ "level": "model",
1858
+ "type": "certification",
1859
+ "repeat": true,
1860
+ "group": "supply",
1861
+ "source": "form",
1862
+ "legalRef": "Dir. (EU) 2024/825 Art. 2: the certification behind a sustainability label, as evidence",
1863
+ "requirement": {
1864
+ "status": "enacted",
1865
+ "source": "eu-2024-825",
1866
+ "clause": "Article 2",
1867
+ "note": "the evidence behind a scheme named under certifications; a scheme homepage or an issuer signature alone proves nothing, only verification.status says what was established"
1868
+ }
1869
+ },
1870
+ {
1871
+ "key": "relatedDocuments",
1872
+ "label": "Related documents",
1873
+ "obligation": "nice",
1874
+ "access": "public",
1875
+ "level": "model",
1876
+ "type": "relatedDocument",
1877
+ "repeat": true,
1878
+ "group": "identification",
1879
+ "source": "form",
1880
+ "legalRef": "none: documents a value points at, with their access policy and, where retained, their digest",
1881
+ "requirement": {
1882
+ "status": "none",
1883
+ "source": "profile addition",
1884
+ "note": "a document reference is a pointer, not a commitment to content, unless the bytes were retained"
1885
+ }
1886
+ },
1887
+ {
1888
+ "key": "microfibreReleaseAssessment",
1889
+ "label": "Microfibre release, assessed",
1890
+ "obligation": "nice",
1891
+ "access": "public",
1892
+ "level": "model",
1893
+ "type": "measurement",
1894
+ "group": "substances",
1895
+ "source": "form",
1896
+ "legalRef": "ESPR Annex I(k): microplastic and microfibre release, by a named method",
1897
+ "requirement": {
1898
+ "status": "anticipated",
1899
+ "source": "eu-espr",
1900
+ "clause": "Annex I(k)",
1901
+ "note": "no harmonised method is fixed; the measurement names the method it was made by and claims no more"
1902
+ }
1903
+ },
1904
+ {
1905
+ "key": "repairabilityAssessment",
1906
+ "label": "Repairability, assessed",
1907
+ "obligation": "nice",
1908
+ "access": "public",
1909
+ "level": "model",
1910
+ "type": "measurement",
1911
+ "group": "repair",
1912
+ "source": "form",
1913
+ "legalRef": "ESPR Annex I(c) and Art. 7(2)(b)(iii): a repairability assessment under a named method",
1914
+ "requirement": {
1915
+ "status": "anticipated",
1916
+ "source": "eu-espr",
1917
+ "clause": "Annex I(c); Article 7(2)(b)(iii)",
1918
+ "note": "waits on the delegated act on repairability scoring; the assessment names its method and no universal score is mandated"
1919
+ }
1920
+ },
1921
+ {
1922
+ "key": "warrantyTerms",
1923
+ "label": "Commercial guarantee terms",
1924
+ "obligation": "nice",
1925
+ "access": "public",
1926
+ "level": "model",
1927
+ "type": "warrantyTerms",
1928
+ "group": "durability",
1929
+ "source": "form",
1930
+ "legalRef": "Dir. (EU) 2024/825: a commercial guarantee of durability states its term and what it counts from",
1931
+ "requirement": {
1932
+ "status": "enacted",
1933
+ "source": "eu-2024-825",
1934
+ "clause": "Article 2",
1935
+ "note": "guarantee carries the term in months; the terms carry the calendar rule an item expiry is derived under, and never an expiry by themselves"
1936
+ }
1937
+ },
1938
+ {
1939
+ "key": "careNoteLocalised",
1940
+ "label": "Care note, by language",
1941
+ "obligation": "nice",
1942
+ "access": "public",
1943
+ "level": "model",
1944
+ "type": "localisedText",
1945
+ "group": "durability",
1946
+ "source": "form",
1947
+ "legalRef": "ESPR Annex I(a): care information as the maker supplied it in each language",
1948
+ "note": "careNote stays the default-language text; a reader selects the exact language, then the base language, then the default, and never rewrites a value.",
1949
+ "requirement": {
1950
+ "status": "anticipated",
1951
+ "source": "eu-espr",
1952
+ "clause": "Annex I(a)",
1953
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1954
+ }
1955
+ },
1956
+ {
1957
+ "key": "substanceStatementLocalised",
1958
+ "label": "Substance statement, by language",
1959
+ "obligation": "nice",
1960
+ "access": "public",
1961
+ "level": "model",
1962
+ "type": "localisedText",
1963
+ "group": "substances",
1964
+ "source": "form",
1965
+ "legalRef": "ESPR Art. 9(2)(b): the substance statement in each language it was supplied in",
1966
+ "requirement": {
1967
+ "status": "anticipated",
1968
+ "source": "eu-espr",
1969
+ "clause": "Article 9(2)(b)",
1970
+ "note": "the ESPR delegated act for textiles is not adopted; the Commission's textile and apparel page gives it an indicative adoption in the fourth quarter of 2027"
1971
+ }
1972
+ },
1973
+ {
1974
+ "key": "inapplicableFields",
1975
+ "label": "Declared inapplicable fields",
1976
+ "obligation": "nice",
1977
+ "access": "public",
1978
+ "level": "model",
1979
+ "type": "record",
1980
+ "fields": [
1981
+ {
1982
+ "key": "field",
1983
+ "label": "Field key",
1984
+ "type": "text",
1985
+ "required": true
1986
+ },
1987
+ {
1988
+ "key": "reason",
1989
+ "label": "Reason",
1990
+ "type": "text",
1991
+ "required": true
1992
+ },
1993
+ {
1994
+ "key": "declaredBy",
1995
+ "label": "Declared by",
1996
+ "type": "text"
1997
+ }
1998
+ ],
1999
+ "repeat": true,
2000
+ "group": "declarations",
2001
+ "source": "form",
2002
+ "legalRef": "none: the profile's own declaration by which a record says that a conditional field does not apply to it, with the reason",
2003
+ "note": "A declaration is an assertion by the declaring party under the record's authorisation; it is shown beside the field it concerns and is never read as the field's value.",
2004
+ "requirement": {
2005
+ "status": "none",
2006
+ "source": "profile addition",
2007
+ "note": "a declaration is how a missing conditional value stops being unresolved; it never makes a required enacted field optional"
2008
+ }
2009
+ }
2010
+ ]
2011
+ }