@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.
- package/LICENSE +58 -0
- package/README.md +64 -0
- package/dist/applicability.d.ts +96 -0
- package/dist/applicability.d.ts.map +1 -0
- package/dist/applicability.js +181 -0
- package/dist/applicability.js.map +1 -0
- package/dist/combinations.d.ts +30 -0
- package/dist/combinations.d.ts.map +1 -0
- package/dist/combinations.js +103 -0
- package/dist/combinations.js.map +1 -0
- package/dist/evidence-shapes.d.ts +198 -0
- package/dist/evidence-shapes.d.ts.map +1 -0
- package/dist/evidence-shapes.js +123 -0
- package/dist/evidence-shapes.js.map +1 -0
- package/dist/gs1-epc-binary.d.ts +81 -0
- package/dist/gs1-epc-binary.d.ts.map +1 -0
- package/dist/gs1-epc-binary.js +252 -0
- package/dist/gs1-epc-binary.js.map +1 -0
- package/dist/gs1-resolution.d.ts +392 -0
- package/dist/gs1-resolution.d.ts.map +1 -0
- package/dist/gs1-resolution.js +696 -0
- package/dist/gs1-resolution.js.map +1 -0
- package/dist/identifiers.d.ts +57 -0
- package/dist/identifiers.d.ts.map +1 -0
- package/dist/identifiers.js +117 -0
- package/dist/identifiers.js.map +1 -0
- package/dist/index.d.ts +235 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +124 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest-v2.d.ts +87 -0
- package/dist/manifest-v2.d.ts.map +1 -0
- package/dist/manifest-v2.js +31 -0
- package/dist/manifest-v2.js.map +1 -0
- package/dist/mapping.d.ts +84 -0
- package/dist/mapping.d.ts.map +1 -0
- package/dist/mapping.js +88 -0
- package/dist/mapping.js.map +1 -0
- package/dist/projections.d.ts +233 -0
- package/dist/projections.d.ts.map +1 -0
- package/dist/projections.js +466 -0
- package/dist/projections.js.map +1 -0
- package/frozen.json +42 -0
- package/generated/consumer/battery-v2.json +2248 -0
- package/generated/consumer/battery-v3.json +4354 -0
- package/generated/consumer/general-v1.json +9 -0
- package/generated/consumer/general-v2.json +714 -0
- package/generated/consumer/textile-v1.json +101 -0
- package/generated/consumer/textile-v2.json +1033 -0
- package/generated/consumer/textile-v3.json +2011 -0
- package/generated/index.json +86 -0
- package/generated/mapping/battery@2.md +116 -0
- package/generated/mapping/battery@3.md +130 -0
- package/generated/mapping/general@2.md +50 -0
- package/generated/mapping/textile@2.md +61 -0
- package/generated/mapping/textile@3.md +73 -0
- package/generated/payload-schema/battery@2.public.schema.json +609 -0
- package/generated/payload-schema/battery@2.restricted.schema.json +377 -0
- package/generated/payload-schema/battery@3.public.schema.json +1364 -0
- package/generated/payload-schema/battery@3.restricted.schema.json +1097 -0
- package/generated/payload-schema/general@1.public.schema.json +37 -0
- package/generated/payload-schema/general@1.restricted.schema.json +9 -0
- package/generated/payload-schema/general@2.public.schema.json +352 -0
- package/generated/payload-schema/general@2.restricted.schema.json +52 -0
- package/generated/payload-schema/textile@1.public.schema.json +82 -0
- package/generated/payload-schema/textile@1.restricted.schema.json +22 -0
- package/generated/payload-schema/textile@2.public.schema.json +464 -0
- package/generated/payload-schema/textile@2.restricted.schema.json +78 -0
- package/generated/payload-schema/textile@3.public.schema.json +1299 -0
- package/generated/payload-schema/textile@3.restricted.schema.json +78 -0
- package/manifests/battery@2.json +4047 -0
- package/manifests/battery@3.json +6164 -0
- package/manifests/exchange/untp-0.7.0-jose@1.json +191 -0
- package/manifests/exchange/vc-di-ecdsa-rdfc-2019@1.json +74 -0
- package/manifests/exchange/vsc-draft-compat@0.1.0.json +64 -0
- package/manifests/general@1.json +148 -0
- package/manifests/general@2.json +1266 -0
- package/manifests/interoperability/epcis-json@1.json +69 -0
- package/manifests/interoperability/epcis-vsc@1.json +64 -0
- package/manifests/interoperability/gs1-digital-link@1.json +71 -0
- package/manifests/operator/federated-operators@1.json +54 -0
- package/manifests/operator/single-operator@1.json +52 -0
- package/manifests/textile@1.json +383 -0
- package/manifests/textile@2.json +1682 -0
- package/manifests/textile@3.json +2763 -0
- package/package.json +59 -0
- package/schemas/exchange-profile.schema.json +134 -0
- package/schemas/gs1/NOTICE.md +11 -0
- package/schemas/gs1/resolver-description-file-schema-1.2.0.json +124 -0
- package/schemas/gs1/resolver-linkset-context-1.2.1.jsonld +39 -0
- package/schemas/gs1/resolver-linkset-schema-1.2.1.json +96 -0
- package/schemas/interoperability-profile.schema.json +347 -0
- package/schemas/operator-profile.schema.json +108 -0
- package/schemas/product-identity.schema.json +45 -0
- package/schemas/profile-manifest-v2.schema.json +1087 -0
- package/schemas/profile-manifest.schema.json +291 -0
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:bsv:dpp:profile:textile@2:payload-public",
|
|
4
|
+
"title": "Textile passport (textile@2), public payload",
|
|
5
|
+
"description": "textile@2: the public payload carried on chain in field 10. JSON Schema validity is one check; obligation under a condition (needs-review), units, provenance and legal applicability are separate checks.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"notice": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"minLength": 1,
|
|
12
|
+
"description": "The sample marker a demonstration record carries first; never product data."
|
|
13
|
+
},
|
|
14
|
+
"profile": {
|
|
15
|
+
"const": "textile",
|
|
16
|
+
"description": "The profile identifier the payload declares."
|
|
17
|
+
},
|
|
18
|
+
"profile_version": {
|
|
19
|
+
"const": 2,
|
|
20
|
+
"description": "The profile version the payload declares; a reader decodes under it and never under a newer one."
|
|
21
|
+
},
|
|
22
|
+
"object_did": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"minLength": 1,
|
|
25
|
+
"description": "An optional physical-object DID carried in the public payload; carrying it does not implement physical binding."
|
|
26
|
+
},
|
|
27
|
+
"dataCarrier": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 1,
|
|
30
|
+
"description": "The data-carrier identifier (chip UID) the lookup service indexes beside the passport identifier."
|
|
31
|
+
},
|
|
32
|
+
"name": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"minLength": 1,
|
|
35
|
+
"title": "Product name",
|
|
36
|
+
"description": "required; ESPR Annex III(a); the passport has to say what the product is"
|
|
37
|
+
},
|
|
38
|
+
"category": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"minLength": 1,
|
|
41
|
+
"title": "Kind of product",
|
|
42
|
+
"description": "required; ESPR Art. 4; the parameters that apply depend on what the product is"
|
|
43
|
+
},
|
|
44
|
+
"modelIdentifier": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"minLength": 1,
|
|
47
|
+
"maxLength": 64,
|
|
48
|
+
"title": "Model or style reference",
|
|
49
|
+
"description": "required; ESPR Annex III(b): the unique product identifier is model-level"
|
|
50
|
+
},
|
|
51
|
+
"batch": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"minLength": 1,
|
|
54
|
+
"maxLength": 64,
|
|
55
|
+
"title": "Batch",
|
|
56
|
+
"description": "required; ESPR Annex III(b); Reg. 1007/2011 traceability of a labelled lot"
|
|
57
|
+
},
|
|
58
|
+
"gtin": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"minLength": 1,
|
|
61
|
+
"pattern": "^\\d{8}$|^\\d{12,14}$",
|
|
62
|
+
"title": "Article number (GTIN)",
|
|
63
|
+
"description": "recommended; ESPR Annex III(c): commodity and trade item codes where they exist"
|
|
64
|
+
},
|
|
65
|
+
"manufacturer": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"minLength": 1,
|
|
68
|
+
"title": "Brand name",
|
|
69
|
+
"description": "required; ESPR Annex III(e); Reg. 1007/2011 Art. 15 identifies the responsible operator"
|
|
70
|
+
},
|
|
71
|
+
"manufacturerContact": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"minLength": 1,
|
|
74
|
+
"title": "Brand contact",
|
|
75
|
+
"description": "required; ESPR Annex III(e): the operator has to be reachable, not merely named"
|
|
76
|
+
},
|
|
77
|
+
"operatorId": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"title": "EU operator identifier",
|
|
80
|
+
"description": "recommended; ESPR Annex III(e)"
|
|
81
|
+
},
|
|
82
|
+
"manufacturingPlace": {
|
|
83
|
+
"type": "object",
|
|
84
|
+
"additionalProperties": false,
|
|
85
|
+
"properties": {
|
|
86
|
+
"city": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"minLength": 1
|
|
89
|
+
},
|
|
90
|
+
"country": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"pattern": "^[A-Z]{2}$"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"required": [
|
|
96
|
+
"city",
|
|
97
|
+
"country"
|
|
98
|
+
],
|
|
99
|
+
"title": "Where it was made",
|
|
100
|
+
"description": "required; Reg. 1007/2011 Art. 16 read with the Union Customs Code origin rules"
|
|
101
|
+
},
|
|
102
|
+
"made": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
|
|
105
|
+
"title": "Made",
|
|
106
|
+
"description": "recommended; ESPR Annex I(a): a durability claim is meaningless without a start date"
|
|
107
|
+
},
|
|
108
|
+
"colour": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"minLength": 1,
|
|
111
|
+
"maxLength": 60,
|
|
112
|
+
"title": "Colour",
|
|
113
|
+
"description": "recommended; Nothing requires this. It identifies the item to the person holding it."
|
|
114
|
+
},
|
|
115
|
+
"size": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"minLength": 1,
|
|
118
|
+
"maxLength": 32,
|
|
119
|
+
"title": "Size",
|
|
120
|
+
"description": "recommended; Nothing requires this. It is what makes a passport match the garment in hand."
|
|
121
|
+
},
|
|
122
|
+
"weight": {
|
|
123
|
+
"type": "number",
|
|
124
|
+
"minimum": 1,
|
|
125
|
+
"maximum": 50000,
|
|
126
|
+
"multipleOf": 1,
|
|
127
|
+
"title": "Weight",
|
|
128
|
+
"description": "recommended; ESPR Annex I(l): resource use, and the basis of every per-mass figure below"
|
|
129
|
+
},
|
|
130
|
+
"fibres": {
|
|
131
|
+
"type": "array",
|
|
132
|
+
"items": {
|
|
133
|
+
"type": "object",
|
|
134
|
+
"additionalProperties": false,
|
|
135
|
+
"properties": {
|
|
136
|
+
"fibre": {
|
|
137
|
+
"type": "string",
|
|
138
|
+
"minLength": 1
|
|
139
|
+
},
|
|
140
|
+
"percent": {
|
|
141
|
+
"type": "number",
|
|
142
|
+
"minimum": 0,
|
|
143
|
+
"maximum": 100
|
|
144
|
+
},
|
|
145
|
+
"source": {
|
|
146
|
+
"enum": [
|
|
147
|
+
"preConsumer",
|
|
148
|
+
"postConsumer",
|
|
149
|
+
"virgin"
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"required": [
|
|
154
|
+
"fibre",
|
|
155
|
+
"percent"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"title": "Fibre composition",
|
|
159
|
+
"description": "required; Reg. (EU) 1007/2011 Art. 5, 9 and 14: binding today, by weight, in descending order"
|
|
160
|
+
},
|
|
161
|
+
"nonTextileParts": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"minLength": 1,
|
|
164
|
+
"maxLength": 200,
|
|
165
|
+
"title": "Non-textile parts of animal origin",
|
|
166
|
+
"description": "required; Reg. (EU) 1007/2011 Art. 12: mandatory where such parts are present; applicability needs-review"
|
|
167
|
+
},
|
|
168
|
+
"recycledContent": {
|
|
169
|
+
"type": "number",
|
|
170
|
+
"minimum": 0,
|
|
171
|
+
"maximum": 100,
|
|
172
|
+
"title": "Recycled content",
|
|
173
|
+
"description": "recommended; ESPR Annex I(g): recycled content is a named parameter; the threshold waits on the act"
|
|
174
|
+
},
|
|
175
|
+
"biobasedContent": {
|
|
176
|
+
"type": "number",
|
|
177
|
+
"minimum": 0,
|
|
178
|
+
"maximum": 100,
|
|
179
|
+
"title": "Bio-based content",
|
|
180
|
+
"description": "optional; Nothing requires this. Declared where a brand can substantiate it."
|
|
181
|
+
},
|
|
182
|
+
"trims": {
|
|
183
|
+
"type": "array",
|
|
184
|
+
"items": {
|
|
185
|
+
"type": "object",
|
|
186
|
+
"additionalProperties": false,
|
|
187
|
+
"properties": {
|
|
188
|
+
"part": {
|
|
189
|
+
"type": "string",
|
|
190
|
+
"minLength": 1
|
|
191
|
+
},
|
|
192
|
+
"material": {
|
|
193
|
+
"type": "string",
|
|
194
|
+
"minLength": 1
|
|
195
|
+
},
|
|
196
|
+
"origin": {
|
|
197
|
+
"type": "string",
|
|
198
|
+
"pattern": "^[A-Z]{2}$"
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"required": [
|
|
202
|
+
"part",
|
|
203
|
+
"material"
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
"title": "Trims and hardware",
|
|
207
|
+
"description": "recommended; ESPR Annex I(d) and (n): what separates for repair, and what separates for recycling"
|
|
208
|
+
},
|
|
209
|
+
"substancesOfConcern": {
|
|
210
|
+
"type": "array",
|
|
211
|
+
"items": {
|
|
212
|
+
"type": "object",
|
|
213
|
+
"additionalProperties": false,
|
|
214
|
+
"properties": {
|
|
215
|
+
"substance": {
|
|
216
|
+
"type": "string",
|
|
217
|
+
"minLength": 1
|
|
218
|
+
},
|
|
219
|
+
"casNumber": {
|
|
220
|
+
"type": "string",
|
|
221
|
+
"minLength": 1,
|
|
222
|
+
"pattern": "^\\d{2,7}-\\d{2}-\\d$"
|
|
223
|
+
},
|
|
224
|
+
"concentration": {
|
|
225
|
+
"type": "number",
|
|
226
|
+
"minimum": 0,
|
|
227
|
+
"maximum": 100
|
|
228
|
+
},
|
|
229
|
+
"location": {
|
|
230
|
+
"type": "string",
|
|
231
|
+
"minLength": 1
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
"required": [
|
|
235
|
+
"substance"
|
|
236
|
+
]
|
|
237
|
+
},
|
|
238
|
+
"title": "Substances of concern",
|
|
239
|
+
"description": "required; ESPR Art. 7(5): substances of concern must be traceable through the passport; applicability needs-review"
|
|
240
|
+
},
|
|
241
|
+
"substanceStatement": {
|
|
242
|
+
"type": "string",
|
|
243
|
+
"minLength": 1,
|
|
244
|
+
"maxLength": 400,
|
|
245
|
+
"title": "What that means for you",
|
|
246
|
+
"description": "recommended; ESPR Art. 9(2)(b): passport information shall be complete and comprehensible"
|
|
247
|
+
},
|
|
248
|
+
"microplasticRelease": {
|
|
249
|
+
"type": "string",
|
|
250
|
+
"title": "Microplastic release",
|
|
251
|
+
"description": "optional; ESPR Annex I(k); the method is not yet fixed"
|
|
252
|
+
},
|
|
253
|
+
"care": {
|
|
254
|
+
"type": "array",
|
|
255
|
+
"uniqueItems": true,
|
|
256
|
+
"items": {
|
|
257
|
+
"enum": [
|
|
258
|
+
"wash30",
|
|
259
|
+
"wash40",
|
|
260
|
+
"wash60",
|
|
261
|
+
"handWash",
|
|
262
|
+
"noWash",
|
|
263
|
+
"noBleach",
|
|
264
|
+
"tumbleLow",
|
|
265
|
+
"noTumble",
|
|
266
|
+
"ironLow",
|
|
267
|
+
"ironMedium",
|
|
268
|
+
"noIron",
|
|
269
|
+
"dryClean",
|
|
270
|
+
"noDryClean"
|
|
271
|
+
]
|
|
272
|
+
},
|
|
273
|
+
"title": "Care",
|
|
274
|
+
"description": "required; ISO 3758 care symbols; Dir. (EU) 2024/825 Art. 2 on durability information"
|
|
275
|
+
},
|
|
276
|
+
"careNote": {
|
|
277
|
+
"type": "string",
|
|
278
|
+
"minLength": 1,
|
|
279
|
+
"maxLength": 400,
|
|
280
|
+
"title": "How to make it last",
|
|
281
|
+
"description": "recommended; ESPR Annex I(a): extending lifetime is the parameter; this is how"
|
|
282
|
+
},
|
|
283
|
+
"expectedLifetime": {
|
|
284
|
+
"type": "integer",
|
|
285
|
+
"minimum": 1,
|
|
286
|
+
"maximum": 100,
|
|
287
|
+
"title": "Expected lifetime",
|
|
288
|
+
"description": "recommended; ESPR Annex I(a) and Dir. (EU) 2024/825: a durability claim must be substantiated"
|
|
289
|
+
},
|
|
290
|
+
"washCycles": {
|
|
291
|
+
"type": "integer",
|
|
292
|
+
"minimum": 1,
|
|
293
|
+
"maximum": 1000,
|
|
294
|
+
"title": "Tested to",
|
|
295
|
+
"description": "recommended; ESPR Annex I(b) reliability, tested per ISO 6330 domestic washing procedures"
|
|
296
|
+
},
|
|
297
|
+
"colourFastness": {
|
|
298
|
+
"type": "number",
|
|
299
|
+
"minimum": 1,
|
|
300
|
+
"maximum": 5,
|
|
301
|
+
"multipleOf": 0.5,
|
|
302
|
+
"title": "Colour fastness",
|
|
303
|
+
"description": "recommended; ESPR Annex I(b), graded 1-5 per the ISO 105 series"
|
|
304
|
+
},
|
|
305
|
+
"dimensionalStability": {
|
|
306
|
+
"type": "number",
|
|
307
|
+
"minimum": -20,
|
|
308
|
+
"maximum": 20,
|
|
309
|
+
"multipleOf": 0.5,
|
|
310
|
+
"title": "Dimensional change after washing",
|
|
311
|
+
"description": "recommended; ESPR Annex I(b), measured per ISO 5077"
|
|
312
|
+
},
|
|
313
|
+
"pillingResistance": {
|
|
314
|
+
"type": "number",
|
|
315
|
+
"minimum": 1,
|
|
316
|
+
"maximum": 5,
|
|
317
|
+
"multipleOf": 0.5,
|
|
318
|
+
"title": "Pilling resistance",
|
|
319
|
+
"description": "recommended; ESPR Annex I(b), graded 1-5 per ISO 12945"
|
|
320
|
+
},
|
|
321
|
+
"guarantee": {
|
|
322
|
+
"type": "integer",
|
|
323
|
+
"minimum": 0,
|
|
324
|
+
"maximum": 600,
|
|
325
|
+
"title": "Guarantee",
|
|
326
|
+
"description": "recommended; Dir. (EU) 2024/825: a commercial guarantee of durability must state its term"
|
|
327
|
+
},
|
|
328
|
+
"repairability": {
|
|
329
|
+
"type": "string",
|
|
330
|
+
"title": "Repairability",
|
|
331
|
+
"description": "recommended; ESPR Annex I(c) and Art. 7(2)(b)(iii)"
|
|
332
|
+
},
|
|
333
|
+
"spareParts": {
|
|
334
|
+
"type": "string",
|
|
335
|
+
"minLength": 1,
|
|
336
|
+
"maxLength": 300,
|
|
337
|
+
"title": "Spare parts",
|
|
338
|
+
"description": "recommended; ESPR Annex I(d): availability of spare parts is a named parameter"
|
|
339
|
+
},
|
|
340
|
+
"repairInstructions": {
|
|
341
|
+
"oneOf": [
|
|
342
|
+
{
|
|
343
|
+
"type": "string",
|
|
344
|
+
"format": "uri"
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"type": "object"
|
|
348
|
+
}
|
|
349
|
+
],
|
|
350
|
+
"title": "Repair instructions",
|
|
351
|
+
"description": "recommended; ESPR Annex I(e): access to repair information"
|
|
352
|
+
},
|
|
353
|
+
"repairServices": {
|
|
354
|
+
"type": "string",
|
|
355
|
+
"format": "uri",
|
|
356
|
+
"title": "Where to get it repaired",
|
|
357
|
+
"description": "recommended; Dir. (EU) 2024/825 recital 22: repair should be the visible option"
|
|
358
|
+
},
|
|
359
|
+
"carbonFootprint": {
|
|
360
|
+
"type": "number",
|
|
361
|
+
"minimum": 0,
|
|
362
|
+
"maximum": 10000,
|
|
363
|
+
"multipleOf": 0.01,
|
|
364
|
+
"title": "Carbon footprint",
|
|
365
|
+
"description": "recommended; ESPR Annex I(m), computed per the Apparel and Footwear PEFCR"
|
|
366
|
+
},
|
|
367
|
+
"carbonFootprintStudy": {
|
|
368
|
+
"oneOf": [
|
|
369
|
+
{
|
|
370
|
+
"type": "string",
|
|
371
|
+
"format": "uri"
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"type": "object"
|
|
375
|
+
}
|
|
376
|
+
],
|
|
377
|
+
"title": "The study behind the figure",
|
|
378
|
+
"description": "recommended; ESPR Art. 9(2)(b): a figure a reader cannot check is not information"
|
|
379
|
+
},
|
|
380
|
+
"footprintClass": {
|
|
381
|
+
"type": "string",
|
|
382
|
+
"title": "Environmental footprint class",
|
|
383
|
+
"description": "recommended; ESPR Art. 7(4)"
|
|
384
|
+
},
|
|
385
|
+
"waterUse": {
|
|
386
|
+
"type": "number",
|
|
387
|
+
"minimum": 0,
|
|
388
|
+
"maximum": 100000,
|
|
389
|
+
"multipleOf": 0.1,
|
|
390
|
+
"title": "Water use",
|
|
391
|
+
"description": "optional; ESPR Annex I(l): resource use. Declared where a brand has measured it."
|
|
392
|
+
},
|
|
393
|
+
"collection": {
|
|
394
|
+
"type": "string",
|
|
395
|
+
"minLength": 1,
|
|
396
|
+
"maxLength": 400,
|
|
397
|
+
"title": "Where to return it",
|
|
398
|
+
"description": "required; Waste Framework Directive: separate collection of textiles since 1 January 2025"
|
|
399
|
+
},
|
|
400
|
+
"recyclability": {
|
|
401
|
+
"type": "string",
|
|
402
|
+
"minLength": 1,
|
|
403
|
+
"maxLength": 400,
|
|
404
|
+
"title": "How it can be recycled",
|
|
405
|
+
"description": "recommended; ESPR Annex I(n): expected generation of waste materials"
|
|
406
|
+
},
|
|
407
|
+
"supplyChain": {
|
|
408
|
+
"type": "array",
|
|
409
|
+
"items": {
|
|
410
|
+
"type": "object",
|
|
411
|
+
"additionalProperties": false,
|
|
412
|
+
"properties": {
|
|
413
|
+
"stage": {
|
|
414
|
+
"enum": [
|
|
415
|
+
"fibre",
|
|
416
|
+
"spinning",
|
|
417
|
+
"weaving",
|
|
418
|
+
"dyeing",
|
|
419
|
+
"assembly"
|
|
420
|
+
]
|
|
421
|
+
},
|
|
422
|
+
"country": {
|
|
423
|
+
"type": "string",
|
|
424
|
+
"pattern": "^[A-Z]{2}$"
|
|
425
|
+
},
|
|
426
|
+
"facility": {
|
|
427
|
+
"type": "string",
|
|
428
|
+
"minLength": 1
|
|
429
|
+
}
|
|
430
|
+
},
|
|
431
|
+
"required": [
|
|
432
|
+
"stage",
|
|
433
|
+
"country"
|
|
434
|
+
]
|
|
435
|
+
},
|
|
436
|
+
"title": "Supply chain",
|
|
437
|
+
"description": "recommended; ESPR Annex III(f): unique facility identifiers, at the stages that have them"
|
|
438
|
+
},
|
|
439
|
+
"certifications": {
|
|
440
|
+
"type": "array",
|
|
441
|
+
"uniqueItems": true,
|
|
442
|
+
"items": {
|
|
443
|
+
"type": "string",
|
|
444
|
+
"minLength": 1
|
|
445
|
+
},
|
|
446
|
+
"title": "Independent certification",
|
|
447
|
+
"description": "recommended; Dir. (EU) 2024/825 Art. 2: a sustainability label needs a certification behind it"
|
|
448
|
+
}
|
|
449
|
+
},
|
|
450
|
+
"required": [
|
|
451
|
+
"batch",
|
|
452
|
+
"care",
|
|
453
|
+
"category",
|
|
454
|
+
"collection",
|
|
455
|
+
"fibres",
|
|
456
|
+
"manufacturer",
|
|
457
|
+
"manufacturerContact",
|
|
458
|
+
"manufacturingPlace",
|
|
459
|
+
"modelIdentifier",
|
|
460
|
+
"name",
|
|
461
|
+
"profile",
|
|
462
|
+
"profile_version"
|
|
463
|
+
]
|
|
464
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:bsv:dpp:profile:textile@2:payload-restricted",
|
|
4
|
+
"title": "Textile passport (textile@2), restricted payload",
|
|
5
|
+
"description": "textile@2: the restricted tiers held off chain, encrypted, and committed by field 11. JSON Schema validity is one check; obligation under a condition (needs-review), units, provenance and legal applicability are separate checks.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"chemicalCompliance": {
|
|
10
|
+
"oneOf": [
|
|
11
|
+
{
|
|
12
|
+
"type": "string",
|
|
13
|
+
"format": "uri"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "object"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"title": "Chemical compliance evidence",
|
|
20
|
+
"description": "recommended; REACH Art. 33 read with ESPR Annex III(d): compliance documentation"
|
|
21
|
+
},
|
|
22
|
+
"separability": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"minLength": 1,
|
|
25
|
+
"maxLength": 300,
|
|
26
|
+
"title": "What comes apart",
|
|
27
|
+
"description": "recommended; ESPR Annex I(h) and (i): ease of disassembly, for reuse and recycling"
|
|
28
|
+
},
|
|
29
|
+
"eprRegistration": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"minLength": 1,
|
|
32
|
+
"maxLength": 64,
|
|
33
|
+
"title": "Producer responsibility registration",
|
|
34
|
+
"description": "recommended; Waste Framework Directive textile EPR: the producer register number"
|
|
35
|
+
},
|
|
36
|
+
"dueDiligence": {
|
|
37
|
+
"oneOf": [
|
|
38
|
+
{
|
|
39
|
+
"type": "string",
|
|
40
|
+
"format": "uri"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "object"
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"title": "Due diligence report",
|
|
47
|
+
"description": "recommended; Dir. (EU) 2024/1760 corporate sustainability due diligence, where in scope"
|
|
48
|
+
},
|
|
49
|
+
"provenance": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"minLength": 1,
|
|
52
|
+
"maxLength": 600,
|
|
53
|
+
"title": "Provenance",
|
|
54
|
+
"description": "optional; Nothing requires this. It is the owner tier the selective-disclosure demo turns on."
|
|
55
|
+
},
|
|
56
|
+
"purchase": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"minLength": 1,
|
|
59
|
+
"maxLength": 200,
|
|
60
|
+
"title": "Purchased",
|
|
61
|
+
"description": "optional; Nothing requires this. It is what makes the record theirs."
|
|
62
|
+
},
|
|
63
|
+
"personalisation": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"minLength": 1,
|
|
66
|
+
"maxLength": 300,
|
|
67
|
+
"title": "Alterations and fit",
|
|
68
|
+
"description": "optional; Nothing requires this. An altered garment is a different garment to its owner."
|
|
69
|
+
},
|
|
70
|
+
"warrantyRegistration": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"minLength": 1,
|
|
73
|
+
"maxLength": 64,
|
|
74
|
+
"title": "Guarantee registration",
|
|
75
|
+
"description": "optional; Nothing requires this. It saves the owner keeping a receipt."
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|