@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,714 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "general",
|
|
3
|
+
"version": 2,
|
|
4
|
+
"profile": "general@2",
|
|
5
|
+
"status": "in use",
|
|
6
|
+
"regulatoryLine": "No rule covers these products, and none is claimed. The record follows the same shape as the regulated profiles so a maker who later falls in scope is already close to it.",
|
|
7
|
+
"note": "A voluntary profile. An obligation of \"must\" here means the record would not be a passport without the value, not that any law asks for it.",
|
|
8
|
+
"sources": [
|
|
9
|
+
"Nothing. No instrument requires a passport for these products, and none is cited as if one did; every field states that in its legalRef.",
|
|
10
|
+
"The shape follows the regulated profiles so a maker who later falls in scope is already close to it."
|
|
11
|
+
],
|
|
12
|
+
"registers": [
|
|
13
|
+
{
|
|
14
|
+
"prefix": "iso3166",
|
|
15
|
+
"name": "ISO 3166-1 alpha-2",
|
|
16
|
+
"reference": "ISO 3166-1",
|
|
17
|
+
"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.",
|
|
18
|
+
"fields": [
|
|
19
|
+
"manufacturingPlace.country",
|
|
20
|
+
"materials.origin",
|
|
21
|
+
"supplyChain.country"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"conventions": {
|
|
26
|
+
"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.",
|
|
27
|
+
"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.",
|
|
28
|
+
"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.",
|
|
29
|
+
"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.",
|
|
30
|
+
"record": "type:record carries fields describing its parts. With repeat:true the value is an array of such records; without, a single one."
|
|
31
|
+
},
|
|
32
|
+
"fields": [
|
|
33
|
+
{
|
|
34
|
+
"key": "name",
|
|
35
|
+
"label": "Product name",
|
|
36
|
+
"obligation": "must",
|
|
37
|
+
"access": "public",
|
|
38
|
+
"level": "model",
|
|
39
|
+
"type": "text",
|
|
40
|
+
"prose": true,
|
|
41
|
+
"group": "identification",
|
|
42
|
+
"source": "form",
|
|
43
|
+
"legalRef": "Nothing requires this. A record with no name is not a passport.",
|
|
44
|
+
"supersedes": "name",
|
|
45
|
+
"note": "What the maker calls it. Nothing else identifies an object to the person holding it."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"key": "category",
|
|
49
|
+
"label": "Kind of object",
|
|
50
|
+
"obligation": "must",
|
|
51
|
+
"access": "public",
|
|
52
|
+
"level": "model",
|
|
53
|
+
"type": "enum",
|
|
54
|
+
"options": [
|
|
55
|
+
{
|
|
56
|
+
"value": "bicycle",
|
|
57
|
+
"label": "Bicycle"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"value": "watch",
|
|
61
|
+
"label": "Watch or clock"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"value": "instrument",
|
|
65
|
+
"label": "Musical instrument"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"value": "furniture",
|
|
69
|
+
"label": "Furniture"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"value": "luggage",
|
|
73
|
+
"label": "Luggage or leather goods"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"value": "jewellery",
|
|
77
|
+
"label": "Jewellery"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"value": "appliance",
|
|
81
|
+
"label": "Appliance or tool"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"value": "sportsEquipment",
|
|
85
|
+
"label": "Sports equipment"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"value": "artwork",
|
|
89
|
+
"label": "Artwork or object"
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"closed": false,
|
|
93
|
+
"group": "identification",
|
|
94
|
+
"source": "form",
|
|
95
|
+
"legalRef": "Nothing requires this. It decides which of the fields below make sense.",
|
|
96
|
+
"note": "Open by definition: the whole point of this profile is that the list is not knowable."
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"key": "manufacturer",
|
|
100
|
+
"label": "Maker",
|
|
101
|
+
"obligation": "must",
|
|
102
|
+
"access": "public",
|
|
103
|
+
"level": "model",
|
|
104
|
+
"type": "text",
|
|
105
|
+
"prose": true,
|
|
106
|
+
"group": "identification",
|
|
107
|
+
"source": "brand",
|
|
108
|
+
"legalRef": "Nothing requires this. On a handbuilt object the maker is the claim.",
|
|
109
|
+
"supersedes": "manufacturer",
|
|
110
|
+
"note": "A workshop, a studio or a company; a name and nothing to constrain it to."
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"key": "manufacturerContact",
|
|
114
|
+
"label": "How to reach the maker",
|
|
115
|
+
"obligation": "must",
|
|
116
|
+
"access": "public",
|
|
117
|
+
"level": "model",
|
|
118
|
+
"type": "text",
|
|
119
|
+
"prose": true,
|
|
120
|
+
"group": "identification",
|
|
121
|
+
"source": "brand",
|
|
122
|
+
"legalRef": "Nothing requires this. A guarantee nobody can claim against is decoration.",
|
|
123
|
+
"note": "An email, an address or a page. Constraining it to one shape would exclude the others."
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"key": "modelIdentifier",
|
|
127
|
+
"label": "Model or reference",
|
|
128
|
+
"obligation": "should",
|
|
129
|
+
"access": "public",
|
|
130
|
+
"level": "model",
|
|
131
|
+
"type": "id",
|
|
132
|
+
"maxLength": 64,
|
|
133
|
+
"group": "identification",
|
|
134
|
+
"source": "form",
|
|
135
|
+
"legalRef": "Nothing requires this. It is how a maker finds the drawings again."
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"key": "serialNumber",
|
|
139
|
+
"label": "Serial number",
|
|
140
|
+
"obligation": "should",
|
|
141
|
+
"access": "public",
|
|
142
|
+
"level": "item",
|
|
143
|
+
"type": "id",
|
|
144
|
+
"maxLength": 64,
|
|
145
|
+
"group": "identification",
|
|
146
|
+
"source": "form",
|
|
147
|
+
"legalRef": "Nothing requires this. It is the commonest way an object proves it is the one."
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"key": "manufacturingPlace",
|
|
151
|
+
"label": "Where it was made",
|
|
152
|
+
"obligation": "should",
|
|
153
|
+
"access": "public",
|
|
154
|
+
"level": "model",
|
|
155
|
+
"type": "record",
|
|
156
|
+
"fields": [
|
|
157
|
+
{
|
|
158
|
+
"key": "city",
|
|
159
|
+
"label": "Town or city",
|
|
160
|
+
"type": "text",
|
|
161
|
+
"required": true
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"key": "country",
|
|
165
|
+
"label": "Country",
|
|
166
|
+
"type": "country",
|
|
167
|
+
"pattern": "^[A-Z]{2}$",
|
|
168
|
+
"patternHint": "a two-letter country code",
|
|
169
|
+
"required": true
|
|
170
|
+
}
|
|
171
|
+
],
|
|
172
|
+
"group": "identification",
|
|
173
|
+
"source": "form",
|
|
174
|
+
"legalRef": "Nothing requires this. Place is half of provenance."
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"key": "made",
|
|
178
|
+
"label": "Made",
|
|
179
|
+
"obligation": "should",
|
|
180
|
+
"access": "public",
|
|
181
|
+
"level": "item",
|
|
182
|
+
"type": "monthYear",
|
|
183
|
+
"group": "identification",
|
|
184
|
+
"source": "form",
|
|
185
|
+
"legalRef": "Nothing requires this. Age is what a durable object is judged on."
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"key": "dimensions",
|
|
189
|
+
"label": "Dimensions",
|
|
190
|
+
"obligation": "should",
|
|
191
|
+
"access": "public",
|
|
192
|
+
"level": "model",
|
|
193
|
+
"type": "text",
|
|
194
|
+
"maxLength": 120,
|
|
195
|
+
"prose": true,
|
|
196
|
+
"group": "identification",
|
|
197
|
+
"source": "form",
|
|
198
|
+
"legalRef": "Nothing requires this. It is what a second buyer asks first.",
|
|
199
|
+
"note": "A frame size, a case diameter, a seat height. No two categories measure alike."
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"key": "weight",
|
|
203
|
+
"label": "Weight",
|
|
204
|
+
"obligation": "should",
|
|
205
|
+
"access": "public",
|
|
206
|
+
"level": "model",
|
|
207
|
+
"type": "decimal",
|
|
208
|
+
"unit": "g",
|
|
209
|
+
"minimum": 1,
|
|
210
|
+
"maximum": 50000,
|
|
211
|
+
"step": 1,
|
|
212
|
+
"group": "identification",
|
|
213
|
+
"source": "form",
|
|
214
|
+
"legalRef": "Nothing requires this."
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"key": "edition",
|
|
218
|
+
"label": "Edition",
|
|
219
|
+
"obligation": "should",
|
|
220
|
+
"access": "public",
|
|
221
|
+
"level": "item",
|
|
222
|
+
"type": "text",
|
|
223
|
+
"maxLength": 80,
|
|
224
|
+
"prose": true,
|
|
225
|
+
"group": "provenance",
|
|
226
|
+
"source": "form",
|
|
227
|
+
"legalRef": "Nothing requires this. On a limited run it is most of the value.",
|
|
228
|
+
"note": "Numbered, limited, one of one, or a named run. Every workshop counts differently."
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"key": "makerName",
|
|
232
|
+
"label": "Made by",
|
|
233
|
+
"obligation": "should",
|
|
234
|
+
"access": "public",
|
|
235
|
+
"level": "item",
|
|
236
|
+
"type": "text",
|
|
237
|
+
"maxLength": 120,
|
|
238
|
+
"prose": true,
|
|
239
|
+
"group": "provenance",
|
|
240
|
+
"source": "form",
|
|
241
|
+
"legalRef": "Nothing requires this. It is the difference between made and manufactured.",
|
|
242
|
+
"note": "The person, where a person can be named. A workshop is a company; a maker is not."
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"key": "authentication",
|
|
246
|
+
"label": "How to tell it is the real one",
|
|
247
|
+
"obligation": "should",
|
|
248
|
+
"access": "public",
|
|
249
|
+
"level": "model",
|
|
250
|
+
"type": "multi",
|
|
251
|
+
"options": [
|
|
252
|
+
{
|
|
253
|
+
"value": "serial",
|
|
254
|
+
"label": "Serial number"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"value": "makersMark",
|
|
258
|
+
"label": "Maker's mark"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"value": "signature",
|
|
262
|
+
"label": "Signature"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"value": "certificate",
|
|
266
|
+
"label": "Certificate of authenticity"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"value": "tag",
|
|
270
|
+
"label": "Tag on the product"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"value": "hallmark",
|
|
274
|
+
"label": "Hallmark"
|
|
275
|
+
}
|
|
276
|
+
],
|
|
277
|
+
"closed": false,
|
|
278
|
+
"group": "provenance",
|
|
279
|
+
"source": "form",
|
|
280
|
+
"legalRef": "Nothing requires this. It is the question a passport exists to answer.",
|
|
281
|
+
"note": "Open: trades authenticate in ways this list will not have thought of."
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"key": "certificate",
|
|
285
|
+
"label": "Certificate",
|
|
286
|
+
"obligation": "should",
|
|
287
|
+
"access": "public",
|
|
288
|
+
"level": "item",
|
|
289
|
+
"type": "document",
|
|
290
|
+
"group": "provenance",
|
|
291
|
+
"source": "form",
|
|
292
|
+
"legalRef": "Nothing requires this. The paper certificate, kept where it cannot be lost."
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"key": "commission",
|
|
296
|
+
"label": "Made for",
|
|
297
|
+
"obligation": "nice",
|
|
298
|
+
"access": "public",
|
|
299
|
+
"level": "item",
|
|
300
|
+
"type": "text",
|
|
301
|
+
"maxLength": 200,
|
|
302
|
+
"prose": true,
|
|
303
|
+
"group": "provenance",
|
|
304
|
+
"source": "form",
|
|
305
|
+
"legalRef": "Nothing requires this. Published only where the first owner wanted it published.",
|
|
306
|
+
"note": "Who it was built for, where the first owner is part of the story."
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"key": "materials",
|
|
310
|
+
"label": "Materials",
|
|
311
|
+
"obligation": "must",
|
|
312
|
+
"access": "public",
|
|
313
|
+
"level": "model",
|
|
314
|
+
"type": "record",
|
|
315
|
+
"fields": [
|
|
316
|
+
{
|
|
317
|
+
"key": "part",
|
|
318
|
+
"label": "Part",
|
|
319
|
+
"type": "text",
|
|
320
|
+
"required": true
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"key": "material",
|
|
324
|
+
"label": "Material",
|
|
325
|
+
"type": "text",
|
|
326
|
+
"required": true
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"key": "origin",
|
|
330
|
+
"label": "Country",
|
|
331
|
+
"type": "country",
|
|
332
|
+
"pattern": "^[A-Z]{2}$",
|
|
333
|
+
"patternHint": "a two-letter country code"
|
|
334
|
+
}
|
|
335
|
+
],
|
|
336
|
+
"repeat": true,
|
|
337
|
+
"group": "making",
|
|
338
|
+
"source": "form",
|
|
339
|
+
"legalRef": "Nothing requires this. It is the first thing a repairer needs and the last thing a recycler needs."
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"key": "method",
|
|
343
|
+
"label": "How it was made",
|
|
344
|
+
"obligation": "should",
|
|
345
|
+
"access": "public",
|
|
346
|
+
"level": "model",
|
|
347
|
+
"type": "enum",
|
|
348
|
+
"options": [
|
|
349
|
+
{
|
|
350
|
+
"value": "handmade",
|
|
351
|
+
"label": "Handmade"
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"value": "handFinished",
|
|
355
|
+
"label": "Hand-finished"
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"value": "madeToOrder",
|
|
359
|
+
"label": "Made to order"
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"value": "smallSeries",
|
|
363
|
+
"label": "Small series"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"value": "series",
|
|
367
|
+
"label": "Series production"
|
|
368
|
+
}
|
|
369
|
+
],
|
|
370
|
+
"closed": false,
|
|
371
|
+
"group": "making",
|
|
372
|
+
"source": "form",
|
|
373
|
+
"legalRef": "Nothing requires this. It is most of what a buyer is paying for.",
|
|
374
|
+
"note": "Open: crafts describe their own methods, and a closed list would flatten them."
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
"key": "finish",
|
|
378
|
+
"label": "Finish",
|
|
379
|
+
"obligation": "should",
|
|
380
|
+
"access": "public",
|
|
381
|
+
"level": "model",
|
|
382
|
+
"type": "text",
|
|
383
|
+
"maxLength": 200,
|
|
384
|
+
"prose": true,
|
|
385
|
+
"group": "making",
|
|
386
|
+
"source": "form",
|
|
387
|
+
"legalRef": "Nothing requires this.",
|
|
388
|
+
"note": "Lacquer, patina, plating, oil. The thing a restorer must not strip by mistake."
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"key": "notes",
|
|
392
|
+
"label": "Anything else worth recording",
|
|
393
|
+
"obligation": "nice",
|
|
394
|
+
"access": "public",
|
|
395
|
+
"level": "model",
|
|
396
|
+
"type": "text",
|
|
397
|
+
"maxLength": 1200,
|
|
398
|
+
"prose": true,
|
|
399
|
+
"group": "making",
|
|
400
|
+
"source": "form",
|
|
401
|
+
"legalRef": "Nothing requires this. It is what keeps a declared profile usable for objects nobody has thought of.",
|
|
402
|
+
"note": "The declared fields cannot anticipate every craft, so one field stays open. It is a named field with a place in the record, not a freeform profile."
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"key": "recycledContent",
|
|
406
|
+
"label": "Recycled content",
|
|
407
|
+
"obligation": "nice",
|
|
408
|
+
"access": "public",
|
|
409
|
+
"level": "model",
|
|
410
|
+
"type": "percent",
|
|
411
|
+
"unit": "%",
|
|
412
|
+
"minimum": 0,
|
|
413
|
+
"maximum": 100,
|
|
414
|
+
"group": "making",
|
|
415
|
+
"source": "form",
|
|
416
|
+
"legalRef": "Nothing requires this. Declared where a maker can substantiate it."
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"key": "substanceStatement",
|
|
420
|
+
"label": "Substances to handle with care",
|
|
421
|
+
"obligation": "should",
|
|
422
|
+
"access": "public",
|
|
423
|
+
"level": "model",
|
|
424
|
+
"type": "text",
|
|
425
|
+
"maxLength": 400,
|
|
426
|
+
"prose": true,
|
|
427
|
+
"group": "making",
|
|
428
|
+
"source": "form",
|
|
429
|
+
"legalRef": "Nothing requires this here, though REACH Art. 33 may require it of the article itself.",
|
|
430
|
+
"note": "Lead solder, shellac, cadmium in old plating. Prose, because the reader is a person."
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
"key": "careNote",
|
|
434
|
+
"label": "How to look after it",
|
|
435
|
+
"obligation": "must",
|
|
436
|
+
"access": "public",
|
|
437
|
+
"level": "model",
|
|
438
|
+
"type": "text",
|
|
439
|
+
"maxLength": 600,
|
|
440
|
+
"prose": true,
|
|
441
|
+
"group": "durability",
|
|
442
|
+
"source": "form",
|
|
443
|
+
"legalRef": "Nothing requires this. It is the single field most likely to extend the object’s life.",
|
|
444
|
+
"supersedes": "care",
|
|
445
|
+
"note": "The advice a maker gives when they hand it over, which no symbol set carries."
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
"key": "serviceInterval",
|
|
449
|
+
"label": "Service interval",
|
|
450
|
+
"obligation": "should",
|
|
451
|
+
"access": "public",
|
|
452
|
+
"level": "model",
|
|
453
|
+
"type": "text",
|
|
454
|
+
"maxLength": 120,
|
|
455
|
+
"prose": true,
|
|
456
|
+
"group": "durability",
|
|
457
|
+
"source": "form",
|
|
458
|
+
"legalRef": "Nothing requires this.",
|
|
459
|
+
"note": "Every five years, every 5,000 km, after every season. No one unit fits."
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"key": "expectedLifetime",
|
|
463
|
+
"label": "Expected lifetime",
|
|
464
|
+
"obligation": "should",
|
|
465
|
+
"access": "public",
|
|
466
|
+
"level": "model",
|
|
467
|
+
"type": "integer",
|
|
468
|
+
"unit": "years",
|
|
469
|
+
"minimum": 1,
|
|
470
|
+
"maximum": 500,
|
|
471
|
+
"step": 1,
|
|
472
|
+
"group": "durability",
|
|
473
|
+
"source": "form",
|
|
474
|
+
"legalRef": "Nothing requires this. A claim made here is one the maker can be held to."
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
"key": "guarantee",
|
|
478
|
+
"label": "Guarantee",
|
|
479
|
+
"obligation": "should",
|
|
480
|
+
"access": "public",
|
|
481
|
+
"level": "model",
|
|
482
|
+
"type": "integer",
|
|
483
|
+
"unit": "months",
|
|
484
|
+
"minimum": 0,
|
|
485
|
+
"maximum": 1200,
|
|
486
|
+
"step": 1,
|
|
487
|
+
"group": "durability",
|
|
488
|
+
"source": "form",
|
|
489
|
+
"legalRef": "Nothing requires the figure, though a stated commercial guarantee binds the maker."
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"key": "guaranteeTerms",
|
|
493
|
+
"label": "Guarantee terms",
|
|
494
|
+
"obligation": "should",
|
|
495
|
+
"access": "public",
|
|
496
|
+
"level": "model",
|
|
497
|
+
"type": "document",
|
|
498
|
+
"group": "durability",
|
|
499
|
+
"source": "form",
|
|
500
|
+
"legalRef": "Nothing requires this. A term with no conditions attached is not a guarantee."
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"key": "repairability",
|
|
504
|
+
"label": "What can be repaired",
|
|
505
|
+
"obligation": "should",
|
|
506
|
+
"access": "public",
|
|
507
|
+
"level": "model",
|
|
508
|
+
"type": "text",
|
|
509
|
+
"maxLength": 400,
|
|
510
|
+
"prose": true,
|
|
511
|
+
"group": "repair",
|
|
512
|
+
"source": "form",
|
|
513
|
+
"legalRef": "Nothing requires this.",
|
|
514
|
+
"note": "Which parts come off, and what needs the workshop. A score would say less."
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
"key": "spareParts",
|
|
518
|
+
"label": "Spare parts",
|
|
519
|
+
"obligation": "should",
|
|
520
|
+
"access": "public",
|
|
521
|
+
"level": "model",
|
|
522
|
+
"type": "text",
|
|
523
|
+
"maxLength": 300,
|
|
524
|
+
"prose": true,
|
|
525
|
+
"group": "repair",
|
|
526
|
+
"source": "form",
|
|
527
|
+
"legalRef": "Nothing requires this. It is what decides whether the object outlives its owner.",
|
|
528
|
+
"note": "Which parts, and for how long. A yes/no would hide the part that matters."
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
"key": "repairInstructions",
|
|
532
|
+
"label": "Repair notes",
|
|
533
|
+
"obligation": "should",
|
|
534
|
+
"access": "public",
|
|
535
|
+
"level": "model",
|
|
536
|
+
"type": "document",
|
|
537
|
+
"group": "repair",
|
|
538
|
+
"source": "form",
|
|
539
|
+
"legalRef": "Nothing requires this."
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"key": "repairServices",
|
|
543
|
+
"label": "Where to get it repaired",
|
|
544
|
+
"obligation": "should",
|
|
545
|
+
"access": "public",
|
|
546
|
+
"level": "model",
|
|
547
|
+
"type": "url",
|
|
548
|
+
"group": "repair",
|
|
549
|
+
"source": "form",
|
|
550
|
+
"legalRef": "Nothing requires this."
|
|
551
|
+
},
|
|
552
|
+
{
|
|
553
|
+
"key": "serviceNotes",
|
|
554
|
+
"label": "Workshop notes",
|
|
555
|
+
"obligation": "should",
|
|
556
|
+
"access": "legitimate",
|
|
557
|
+
"level": "model",
|
|
558
|
+
"type": "text",
|
|
559
|
+
"maxLength": 600,
|
|
560
|
+
"prose": true,
|
|
561
|
+
"group": "repair",
|
|
562
|
+
"source": "form",
|
|
563
|
+
"legalRef": "Nothing requires this. Restricted because it is useless to a consumer and valuable to a repairer.",
|
|
564
|
+
"note": "Torque figures, thread sizes, the fixture that releases the part. Written for a trade, not a buyer."
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"key": "collection",
|
|
568
|
+
"label": "Where to return it",
|
|
569
|
+
"obligation": "should",
|
|
570
|
+
"access": "public",
|
|
571
|
+
"level": "model",
|
|
572
|
+
"type": "text",
|
|
573
|
+
"maxLength": 400,
|
|
574
|
+
"prose": true,
|
|
575
|
+
"group": "endOfLife",
|
|
576
|
+
"source": "form",
|
|
577
|
+
"legalRef": "Nothing requires this. A maker who takes it back says so here.",
|
|
578
|
+
"note": "A place and a method, in the words the person returning it will use."
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
"key": "recyclability",
|
|
582
|
+
"label": "What can be recovered",
|
|
583
|
+
"obligation": "should",
|
|
584
|
+
"access": "public",
|
|
585
|
+
"level": "model",
|
|
586
|
+
"type": "text",
|
|
587
|
+
"maxLength": 400,
|
|
588
|
+
"prose": true,
|
|
589
|
+
"group": "endOfLife",
|
|
590
|
+
"source": "form",
|
|
591
|
+
"legalRef": "Nothing requires this.",
|
|
592
|
+
"note": "What a recycler can actually do with it, which no percentage conveys."
|
|
593
|
+
},
|
|
594
|
+
{
|
|
595
|
+
"key": "separability",
|
|
596
|
+
"label": "What comes apart",
|
|
597
|
+
"obligation": "should",
|
|
598
|
+
"access": "legitimate",
|
|
599
|
+
"level": "model",
|
|
600
|
+
"type": "text",
|
|
601
|
+
"maxLength": 300,
|
|
602
|
+
"prose": true,
|
|
603
|
+
"group": "endOfLife",
|
|
604
|
+
"source": "form",
|
|
605
|
+
"legalRef": "Nothing requires this.",
|
|
606
|
+
"note": "Which components separate, and how. The sentence a dismantler needs."
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
"key": "supplyChain",
|
|
610
|
+
"label": "Supply chain",
|
|
611
|
+
"obligation": "nice",
|
|
612
|
+
"access": "public",
|
|
613
|
+
"level": "model",
|
|
614
|
+
"type": "record",
|
|
615
|
+
"fields": [
|
|
616
|
+
{
|
|
617
|
+
"key": "stage",
|
|
618
|
+
"label": "Stage",
|
|
619
|
+
"type": "text",
|
|
620
|
+
"required": true
|
|
621
|
+
},
|
|
622
|
+
{
|
|
623
|
+
"key": "country",
|
|
624
|
+
"label": "Country",
|
|
625
|
+
"type": "country",
|
|
626
|
+
"pattern": "^[A-Z]{2}$",
|
|
627
|
+
"patternHint": "a two-letter country code",
|
|
628
|
+
"required": true
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
"key": "facility",
|
|
632
|
+
"label": "Workshop or supplier",
|
|
633
|
+
"type": "text"
|
|
634
|
+
}
|
|
635
|
+
],
|
|
636
|
+
"repeat": true,
|
|
637
|
+
"group": "supply",
|
|
638
|
+
"source": "form",
|
|
639
|
+
"legalRef": "Nothing requires this. Declared by makers who treat their suppliers as a credential."
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"key": "certifications",
|
|
643
|
+
"label": "Independent certification",
|
|
644
|
+
"obligation": "nice",
|
|
645
|
+
"access": "public",
|
|
646
|
+
"level": "model",
|
|
647
|
+
"type": "multi",
|
|
648
|
+
"options": [],
|
|
649
|
+
"closed": false,
|
|
650
|
+
"group": "supply",
|
|
651
|
+
"source": "form",
|
|
652
|
+
"legalRef": "Nothing requires this.",
|
|
653
|
+
"note": "Open, and with no list at all: the schemes that matter differ completely between a violin and a bicycle, so nothing here could be exhaustive."
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
"key": "provenance",
|
|
657
|
+
"label": "Provenance",
|
|
658
|
+
"obligation": "nice",
|
|
659
|
+
"access": "owner",
|
|
660
|
+
"level": "item",
|
|
661
|
+
"type": "text",
|
|
662
|
+
"maxLength": 600,
|
|
663
|
+
"prose": true,
|
|
664
|
+
"group": "owner",
|
|
665
|
+
"source": "form",
|
|
666
|
+
"legalRef": "Nothing requires this. It is the owner tier the selective-disclosure demo turns on.",
|
|
667
|
+
"supersedes": "provenance",
|
|
668
|
+
"note": "The story of this particular object, which is prose by definition."
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
"key": "purchase",
|
|
672
|
+
"label": "Purchased",
|
|
673
|
+
"obligation": "nice",
|
|
674
|
+
"access": "owner",
|
|
675
|
+
"level": "item",
|
|
676
|
+
"type": "text",
|
|
677
|
+
"maxLength": 200,
|
|
678
|
+
"prose": true,
|
|
679
|
+
"group": "owner",
|
|
680
|
+
"source": "form",
|
|
681
|
+
"legalRef": "Nothing requires this. It is what makes the record theirs.",
|
|
682
|
+
"note": "Where and when, as the owner would write it."
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
"key": "personalisation",
|
|
686
|
+
"label": "Fitting and setup",
|
|
687
|
+
"obligation": "nice",
|
|
688
|
+
"access": "owner",
|
|
689
|
+
"level": "item",
|
|
690
|
+
"type": "text",
|
|
691
|
+
"maxLength": 300,
|
|
692
|
+
"prose": true,
|
|
693
|
+
"group": "owner",
|
|
694
|
+
"source": "form",
|
|
695
|
+
"legalRef": "Nothing requires this. A fitted object is a different object to its owner.",
|
|
696
|
+
"supersedes": "personalisation",
|
|
697
|
+
"note": "Saddle height, string gauge, engraving. Written by whoever set it up."
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
"key": "valuation",
|
|
701
|
+
"label": "Valuation reference",
|
|
702
|
+
"obligation": "nice",
|
|
703
|
+
"access": "owner",
|
|
704
|
+
"level": "item",
|
|
705
|
+
"type": "text",
|
|
706
|
+
"maxLength": 160,
|
|
707
|
+
"prose": true,
|
|
708
|
+
"group": "owner",
|
|
709
|
+
"source": "form",
|
|
710
|
+
"legalRef": "Nothing requires this. Owner tier only, and no figure ever reaches the public payload.",
|
|
711
|
+
"note": "An insurer’s reference or an appraisal note. Never a price on the public record."
|
|
712
|
+
}
|
|
713
|
+
]
|
|
714
|
+
}
|