@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,1266 @@
|
|
|
1
|
+
{
|
|
2
|
+
"manifestVersion": "1",
|
|
3
|
+
"kind": "industry",
|
|
4
|
+
"baseline": "native-baseline@1",
|
|
5
|
+
"roles": [
|
|
6
|
+
"passport-writer",
|
|
7
|
+
"attestation-issuer",
|
|
8
|
+
"registry",
|
|
9
|
+
"passport-reader"
|
|
10
|
+
],
|
|
11
|
+
"schemaDialect": "https://json-schema.org/draft/2020-12/schema",
|
|
12
|
+
"accessPolicyRef": "spec/record-model.md#7-the-owner-tier-binding",
|
|
13
|
+
"accessTiers": [
|
|
14
|
+
{
|
|
15
|
+
"id": "public",
|
|
16
|
+
"description": "Anyone with the identifier.",
|
|
17
|
+
"storage": "on-chain public payload"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "owner",
|
|
21
|
+
"description": "The current holder, travelling with possession rather than with an authorisation.",
|
|
22
|
+
"storage": "off-chain encrypted"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "legitimate",
|
|
26
|
+
"description": "Persons with a legitimate interest, the Batteries Regulation Article 77(2) group generalised.",
|
|
27
|
+
"storage": "off-chain encrypted"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "authority",
|
|
31
|
+
"description": "Notified bodies, market surveillance and other authorities.",
|
|
32
|
+
"storage": "off-chain encrypted"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"extends": null,
|
|
36
|
+
"id": "general",
|
|
37
|
+
"version": 2,
|
|
38
|
+
"profile": "general@2",
|
|
39
|
+
"status": "current",
|
|
40
|
+
"title": "General product passport",
|
|
41
|
+
"description": "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.",
|
|
42
|
+
"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.",
|
|
43
|
+
"applicability": {
|
|
44
|
+
"categories": [
|
|
45
|
+
{
|
|
46
|
+
"value": "bicycle",
|
|
47
|
+
"label": "Bicycle"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"value": "watch",
|
|
51
|
+
"label": "Watch or clock"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"value": "instrument",
|
|
55
|
+
"label": "Musical instrument"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"value": "furniture",
|
|
59
|
+
"label": "Furniture"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"value": "luggage",
|
|
63
|
+
"label": "Luggage or leather goods"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"value": "jewellery",
|
|
67
|
+
"label": "Jewellery"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"value": "appliance",
|
|
71
|
+
"label": "Appliance or tool"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"value": "sportsEquipment",
|
|
75
|
+
"label": "Sports equipment"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"value": "artwork",
|
|
79
|
+
"label": "Artwork or object"
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"categoryKey": "category",
|
|
83
|
+
"jurisdictions": [],
|
|
84
|
+
"statements": [
|
|
85
|
+
{
|
|
86
|
+
"text": "No instrument requires a passport for these products, and none is cited as if one did; every field states that in its legal basis.",
|
|
87
|
+
"status": "needs-review"
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
"schemaUri": "generated/payload-schema/general@2.public.schema.json",
|
|
92
|
+
"schemaDigest": "fa82ad26b73ddfb99b7fea20b464b20c6f2e4c58ef750f567c880f83f5fa8a6c",
|
|
93
|
+
"restrictedSchemaUri": "generated/payload-schema/general@2.restricted.schema.json",
|
|
94
|
+
"restrictedSchemaDigest": "4960025fb10a0fd274f9527ca1d0184adf22621d950a0a72dad6c339639c6c1f",
|
|
95
|
+
"contextRefs": [],
|
|
96
|
+
"stamps": [
|
|
97
|
+
{
|
|
98
|
+
"key": "notice",
|
|
99
|
+
"description": "The sample marker a demonstration record carries first; never product data.",
|
|
100
|
+
"valueType": "text"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"key": "profile",
|
|
104
|
+
"description": "The profile identifier the payload declares.",
|
|
105
|
+
"valueType": "id",
|
|
106
|
+
"const": "general"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"key": "profile_version",
|
|
110
|
+
"description": "The profile version the payload declares; a reader decodes under it and never under a newer one.",
|
|
111
|
+
"valueType": "integer",
|
|
112
|
+
"const": 2
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"key": "object_did",
|
|
116
|
+
"description": "An optional physical-object DID carried in the public payload; carrying it does not implement physical binding.",
|
|
117
|
+
"valueType": "id"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"key": "dataCarrier",
|
|
121
|
+
"description": "The data-carrier identifier (chip UID) the lookup service indexes beside the passport identifier.",
|
|
122
|
+
"valueType": "id"
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
"fields": [
|
|
126
|
+
{
|
|
127
|
+
"key": "name",
|
|
128
|
+
"pointer": "/name",
|
|
129
|
+
"label": "Product name",
|
|
130
|
+
"valueType": "text",
|
|
131
|
+
"cardinality": "one",
|
|
132
|
+
"granularity": "model",
|
|
133
|
+
"provenance": {
|
|
134
|
+
"capture": "form",
|
|
135
|
+
"prose": true
|
|
136
|
+
},
|
|
137
|
+
"accessTier": "public",
|
|
138
|
+
"obligation": "required",
|
|
139
|
+
"legalBasis": "Nothing requires this. A record with no name is not a passport.",
|
|
140
|
+
"applicability": {
|
|
141
|
+
"rule": "always"
|
|
142
|
+
},
|
|
143
|
+
"supersedes": "name",
|
|
144
|
+
"group": "identification",
|
|
145
|
+
"note": "What the maker calls it. Nothing else identifies an object to the person holding it."
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"key": "category",
|
|
149
|
+
"pointer": "/category",
|
|
150
|
+
"label": "Kind of object",
|
|
151
|
+
"valueType": "enum",
|
|
152
|
+
"codeList": {
|
|
153
|
+
"closed": false,
|
|
154
|
+
"options": [
|
|
155
|
+
{
|
|
156
|
+
"value": "bicycle",
|
|
157
|
+
"label": "Bicycle"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"value": "watch",
|
|
161
|
+
"label": "Watch or clock"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"value": "instrument",
|
|
165
|
+
"label": "Musical instrument"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"value": "furniture",
|
|
169
|
+
"label": "Furniture"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"value": "luggage",
|
|
173
|
+
"label": "Luggage or leather goods"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"value": "jewellery",
|
|
177
|
+
"label": "Jewellery"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"value": "appliance",
|
|
181
|
+
"label": "Appliance or tool"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"value": "sportsEquipment",
|
|
185
|
+
"label": "Sports equipment"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"value": "artwork",
|
|
189
|
+
"label": "Artwork or object"
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
},
|
|
193
|
+
"cardinality": "one",
|
|
194
|
+
"granularity": "model",
|
|
195
|
+
"provenance": {
|
|
196
|
+
"capture": "form"
|
|
197
|
+
},
|
|
198
|
+
"accessTier": "public",
|
|
199
|
+
"obligation": "required",
|
|
200
|
+
"legalBasis": "Nothing requires this. It decides which of the fields below make sense.",
|
|
201
|
+
"applicability": {
|
|
202
|
+
"rule": "always"
|
|
203
|
+
},
|
|
204
|
+
"group": "identification",
|
|
205
|
+
"note": "Open by definition: the whole point of this profile is that the list is not knowable."
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"key": "manufacturer",
|
|
209
|
+
"pointer": "/manufacturer",
|
|
210
|
+
"label": "Maker",
|
|
211
|
+
"valueType": "text",
|
|
212
|
+
"cardinality": "one",
|
|
213
|
+
"granularity": "model",
|
|
214
|
+
"provenance": {
|
|
215
|
+
"capture": "brand",
|
|
216
|
+
"prose": true
|
|
217
|
+
},
|
|
218
|
+
"accessTier": "public",
|
|
219
|
+
"obligation": "required",
|
|
220
|
+
"legalBasis": "Nothing requires this. On a handbuilt object the maker is the claim.",
|
|
221
|
+
"applicability": {
|
|
222
|
+
"rule": "always"
|
|
223
|
+
},
|
|
224
|
+
"supersedes": "manufacturer",
|
|
225
|
+
"group": "identification",
|
|
226
|
+
"note": "A workshop, a studio or a company; a name and nothing to constrain it to."
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"key": "manufacturerContact",
|
|
230
|
+
"pointer": "/manufacturerContact",
|
|
231
|
+
"label": "How to reach the maker",
|
|
232
|
+
"valueType": "text",
|
|
233
|
+
"cardinality": "one",
|
|
234
|
+
"granularity": "model",
|
|
235
|
+
"provenance": {
|
|
236
|
+
"capture": "brand",
|
|
237
|
+
"prose": true
|
|
238
|
+
},
|
|
239
|
+
"accessTier": "public",
|
|
240
|
+
"obligation": "required",
|
|
241
|
+
"legalBasis": "Nothing requires this. A guarantee nobody can claim against is decoration.",
|
|
242
|
+
"applicability": {
|
|
243
|
+
"rule": "always"
|
|
244
|
+
},
|
|
245
|
+
"group": "identification",
|
|
246
|
+
"note": "An email, an address or a page. Constraining it to one shape would exclude the others."
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"key": "modelIdentifier",
|
|
250
|
+
"pointer": "/modelIdentifier",
|
|
251
|
+
"label": "Model or reference",
|
|
252
|
+
"valueType": "id",
|
|
253
|
+
"constraints": {
|
|
254
|
+
"maxLength": 64
|
|
255
|
+
},
|
|
256
|
+
"cardinality": "one",
|
|
257
|
+
"granularity": "model",
|
|
258
|
+
"provenance": {
|
|
259
|
+
"capture": "form"
|
|
260
|
+
},
|
|
261
|
+
"accessTier": "public",
|
|
262
|
+
"obligation": "recommended",
|
|
263
|
+
"legalBasis": "Nothing requires this. It is how a maker finds the drawings again.",
|
|
264
|
+
"applicability": {
|
|
265
|
+
"rule": "always"
|
|
266
|
+
},
|
|
267
|
+
"group": "identification"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"key": "serialNumber",
|
|
271
|
+
"pointer": "/serialNumber",
|
|
272
|
+
"label": "Serial number",
|
|
273
|
+
"valueType": "id",
|
|
274
|
+
"constraints": {
|
|
275
|
+
"maxLength": 64
|
|
276
|
+
},
|
|
277
|
+
"cardinality": "one",
|
|
278
|
+
"granularity": "item",
|
|
279
|
+
"provenance": {
|
|
280
|
+
"capture": "form"
|
|
281
|
+
},
|
|
282
|
+
"accessTier": "public",
|
|
283
|
+
"obligation": "recommended",
|
|
284
|
+
"legalBasis": "Nothing requires this. It is the commonest way an object proves it is the one.",
|
|
285
|
+
"applicability": {
|
|
286
|
+
"rule": "always"
|
|
287
|
+
},
|
|
288
|
+
"group": "identification"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"key": "manufacturingPlace",
|
|
292
|
+
"pointer": "/manufacturingPlace",
|
|
293
|
+
"label": "Where it was made",
|
|
294
|
+
"valueType": "record",
|
|
295
|
+
"cardinality": "one",
|
|
296
|
+
"granularity": "model",
|
|
297
|
+
"provenance": {
|
|
298
|
+
"capture": "form"
|
|
299
|
+
},
|
|
300
|
+
"accessTier": "public",
|
|
301
|
+
"obligation": "recommended",
|
|
302
|
+
"legalBasis": "Nothing requires this. Place is half of provenance.",
|
|
303
|
+
"applicability": {
|
|
304
|
+
"rule": "always"
|
|
305
|
+
},
|
|
306
|
+
"group": "identification",
|
|
307
|
+
"parts": [
|
|
308
|
+
{
|
|
309
|
+
"key": "city",
|
|
310
|
+
"label": "Town or city",
|
|
311
|
+
"valueType": "text",
|
|
312
|
+
"required": true
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"key": "country",
|
|
316
|
+
"label": "Country",
|
|
317
|
+
"valueType": "country",
|
|
318
|
+
"constraints": {
|
|
319
|
+
"pattern": "^[A-Z]{2}$",
|
|
320
|
+
"patternHint": "a two-letter country code"
|
|
321
|
+
},
|
|
322
|
+
"required": true
|
|
323
|
+
}
|
|
324
|
+
]
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"key": "made",
|
|
328
|
+
"pointer": "/made",
|
|
329
|
+
"label": "Made",
|
|
330
|
+
"valueType": "monthYear",
|
|
331
|
+
"cardinality": "one",
|
|
332
|
+
"granularity": "item",
|
|
333
|
+
"provenance": {
|
|
334
|
+
"capture": "form"
|
|
335
|
+
},
|
|
336
|
+
"accessTier": "public",
|
|
337
|
+
"obligation": "recommended",
|
|
338
|
+
"legalBasis": "Nothing requires this. Age is what a durable object is judged on.",
|
|
339
|
+
"applicability": {
|
|
340
|
+
"rule": "always"
|
|
341
|
+
},
|
|
342
|
+
"group": "identification"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"key": "dimensions",
|
|
346
|
+
"pointer": "/dimensions",
|
|
347
|
+
"label": "Dimensions",
|
|
348
|
+
"valueType": "text",
|
|
349
|
+
"constraints": {
|
|
350
|
+
"maxLength": 120
|
|
351
|
+
},
|
|
352
|
+
"cardinality": "one",
|
|
353
|
+
"granularity": "model",
|
|
354
|
+
"provenance": {
|
|
355
|
+
"capture": "form",
|
|
356
|
+
"prose": true
|
|
357
|
+
},
|
|
358
|
+
"accessTier": "public",
|
|
359
|
+
"obligation": "recommended",
|
|
360
|
+
"legalBasis": "Nothing requires this. It is what a second buyer asks first.",
|
|
361
|
+
"applicability": {
|
|
362
|
+
"rule": "always"
|
|
363
|
+
},
|
|
364
|
+
"group": "identification",
|
|
365
|
+
"note": "A frame size, a case diameter, a seat height. No two categories measure alike."
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"key": "weight",
|
|
369
|
+
"pointer": "/weight",
|
|
370
|
+
"label": "Weight",
|
|
371
|
+
"valueType": "decimal",
|
|
372
|
+
"unit": "g",
|
|
373
|
+
"constraints": {
|
|
374
|
+
"minimum": 1,
|
|
375
|
+
"maximum": 50000,
|
|
376
|
+
"step": 1
|
|
377
|
+
},
|
|
378
|
+
"cardinality": "one",
|
|
379
|
+
"granularity": "model",
|
|
380
|
+
"provenance": {
|
|
381
|
+
"capture": "form"
|
|
382
|
+
},
|
|
383
|
+
"accessTier": "public",
|
|
384
|
+
"obligation": "recommended",
|
|
385
|
+
"legalBasis": "Nothing requires this.",
|
|
386
|
+
"applicability": {
|
|
387
|
+
"rule": "always"
|
|
388
|
+
},
|
|
389
|
+
"group": "identification"
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"key": "edition",
|
|
393
|
+
"pointer": "/edition",
|
|
394
|
+
"label": "Edition",
|
|
395
|
+
"valueType": "text",
|
|
396
|
+
"constraints": {
|
|
397
|
+
"maxLength": 80
|
|
398
|
+
},
|
|
399
|
+
"cardinality": "one",
|
|
400
|
+
"granularity": "item",
|
|
401
|
+
"provenance": {
|
|
402
|
+
"capture": "form",
|
|
403
|
+
"prose": true
|
|
404
|
+
},
|
|
405
|
+
"accessTier": "public",
|
|
406
|
+
"obligation": "recommended",
|
|
407
|
+
"legalBasis": "Nothing requires this. On a limited run it is most of the value.",
|
|
408
|
+
"applicability": {
|
|
409
|
+
"rule": "always"
|
|
410
|
+
},
|
|
411
|
+
"group": "provenance",
|
|
412
|
+
"note": "Numbered, limited, one of one, or a named run. Every workshop counts differently."
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"key": "makerName",
|
|
416
|
+
"pointer": "/makerName",
|
|
417
|
+
"label": "Made by",
|
|
418
|
+
"valueType": "text",
|
|
419
|
+
"constraints": {
|
|
420
|
+
"maxLength": 120
|
|
421
|
+
},
|
|
422
|
+
"cardinality": "one",
|
|
423
|
+
"granularity": "item",
|
|
424
|
+
"provenance": {
|
|
425
|
+
"capture": "form",
|
|
426
|
+
"prose": true
|
|
427
|
+
},
|
|
428
|
+
"accessTier": "public",
|
|
429
|
+
"obligation": "recommended",
|
|
430
|
+
"legalBasis": "Nothing requires this. It is the difference between made and manufactured.",
|
|
431
|
+
"applicability": {
|
|
432
|
+
"rule": "always"
|
|
433
|
+
},
|
|
434
|
+
"group": "provenance",
|
|
435
|
+
"note": "The person, where a person can be named. A workshop is a company; a maker is not."
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"key": "authentication",
|
|
439
|
+
"pointer": "/authentication",
|
|
440
|
+
"label": "How to tell it is the real one",
|
|
441
|
+
"valueType": "multi",
|
|
442
|
+
"codeList": {
|
|
443
|
+
"closed": false,
|
|
444
|
+
"options": [
|
|
445
|
+
{
|
|
446
|
+
"value": "serial",
|
|
447
|
+
"label": "Serial number"
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"value": "makersMark",
|
|
451
|
+
"label": "Maker's mark"
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"value": "signature",
|
|
455
|
+
"label": "Signature"
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"value": "certificate",
|
|
459
|
+
"label": "Certificate of authenticity"
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"value": "tag",
|
|
463
|
+
"label": "Tag on the product"
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"value": "hallmark",
|
|
467
|
+
"label": "Hallmark"
|
|
468
|
+
}
|
|
469
|
+
]
|
|
470
|
+
},
|
|
471
|
+
"cardinality": "one",
|
|
472
|
+
"granularity": "model",
|
|
473
|
+
"provenance": {
|
|
474
|
+
"capture": "form"
|
|
475
|
+
},
|
|
476
|
+
"accessTier": "public",
|
|
477
|
+
"obligation": "recommended",
|
|
478
|
+
"legalBasis": "Nothing requires this. It is the question a passport exists to answer.",
|
|
479
|
+
"applicability": {
|
|
480
|
+
"rule": "always"
|
|
481
|
+
},
|
|
482
|
+
"group": "provenance",
|
|
483
|
+
"note": "Open: trades authenticate in ways this list will not have thought of."
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
"key": "certificate",
|
|
487
|
+
"pointer": "/certificate",
|
|
488
|
+
"label": "Certificate",
|
|
489
|
+
"valueType": "document",
|
|
490
|
+
"cardinality": "one",
|
|
491
|
+
"granularity": "item",
|
|
492
|
+
"provenance": {
|
|
493
|
+
"capture": "form"
|
|
494
|
+
},
|
|
495
|
+
"accessTier": "public",
|
|
496
|
+
"obligation": "recommended",
|
|
497
|
+
"legalBasis": "Nothing requires this. The paper certificate, kept where it cannot be lost.",
|
|
498
|
+
"applicability": {
|
|
499
|
+
"rule": "always"
|
|
500
|
+
},
|
|
501
|
+
"group": "provenance"
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
"key": "commission",
|
|
505
|
+
"pointer": "/commission",
|
|
506
|
+
"label": "Made for",
|
|
507
|
+
"valueType": "text",
|
|
508
|
+
"constraints": {
|
|
509
|
+
"maxLength": 200
|
|
510
|
+
},
|
|
511
|
+
"cardinality": "one",
|
|
512
|
+
"granularity": "item",
|
|
513
|
+
"provenance": {
|
|
514
|
+
"capture": "form",
|
|
515
|
+
"prose": true
|
|
516
|
+
},
|
|
517
|
+
"accessTier": "public",
|
|
518
|
+
"obligation": "optional",
|
|
519
|
+
"legalBasis": "Nothing requires this. Published only where the first owner wanted it published.",
|
|
520
|
+
"applicability": {
|
|
521
|
+
"rule": "always"
|
|
522
|
+
},
|
|
523
|
+
"group": "provenance",
|
|
524
|
+
"note": "Who it was built for, where the first owner is part of the story."
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
"key": "materials",
|
|
528
|
+
"pointer": "/materials",
|
|
529
|
+
"label": "Materials",
|
|
530
|
+
"valueType": "record",
|
|
531
|
+
"cardinality": "many",
|
|
532
|
+
"granularity": "model",
|
|
533
|
+
"provenance": {
|
|
534
|
+
"capture": "form"
|
|
535
|
+
},
|
|
536
|
+
"accessTier": "public",
|
|
537
|
+
"obligation": "required",
|
|
538
|
+
"legalBasis": "Nothing requires this. It is the first thing a repairer needs and the last thing a recycler needs.",
|
|
539
|
+
"applicability": {
|
|
540
|
+
"rule": "always"
|
|
541
|
+
},
|
|
542
|
+
"group": "making",
|
|
543
|
+
"parts": [
|
|
544
|
+
{
|
|
545
|
+
"key": "part",
|
|
546
|
+
"label": "Part",
|
|
547
|
+
"valueType": "text",
|
|
548
|
+
"required": true
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
"key": "material",
|
|
552
|
+
"label": "Material",
|
|
553
|
+
"valueType": "text",
|
|
554
|
+
"required": true
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
"key": "origin",
|
|
558
|
+
"label": "Country",
|
|
559
|
+
"valueType": "country",
|
|
560
|
+
"constraints": {
|
|
561
|
+
"pattern": "^[A-Z]{2}$",
|
|
562
|
+
"patternHint": "a two-letter country code"
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
]
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
"key": "method",
|
|
569
|
+
"pointer": "/method",
|
|
570
|
+
"label": "How it was made",
|
|
571
|
+
"valueType": "enum",
|
|
572
|
+
"codeList": {
|
|
573
|
+
"closed": false,
|
|
574
|
+
"options": [
|
|
575
|
+
{
|
|
576
|
+
"value": "handmade",
|
|
577
|
+
"label": "Handmade"
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
"value": "handFinished",
|
|
581
|
+
"label": "Hand-finished"
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
"value": "madeToOrder",
|
|
585
|
+
"label": "Made to order"
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
"value": "smallSeries",
|
|
589
|
+
"label": "Small series"
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
"value": "series",
|
|
593
|
+
"label": "Series production"
|
|
594
|
+
}
|
|
595
|
+
]
|
|
596
|
+
},
|
|
597
|
+
"cardinality": "one",
|
|
598
|
+
"granularity": "model",
|
|
599
|
+
"provenance": {
|
|
600
|
+
"capture": "form"
|
|
601
|
+
},
|
|
602
|
+
"accessTier": "public",
|
|
603
|
+
"obligation": "recommended",
|
|
604
|
+
"legalBasis": "Nothing requires this. It is most of what a buyer is paying for.",
|
|
605
|
+
"applicability": {
|
|
606
|
+
"rule": "always"
|
|
607
|
+
},
|
|
608
|
+
"group": "making",
|
|
609
|
+
"note": "Open: crafts describe their own methods, and a closed list would flatten them."
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
"key": "finish",
|
|
613
|
+
"pointer": "/finish",
|
|
614
|
+
"label": "Finish",
|
|
615
|
+
"valueType": "text",
|
|
616
|
+
"constraints": {
|
|
617
|
+
"maxLength": 200
|
|
618
|
+
},
|
|
619
|
+
"cardinality": "one",
|
|
620
|
+
"granularity": "model",
|
|
621
|
+
"provenance": {
|
|
622
|
+
"capture": "form",
|
|
623
|
+
"prose": true
|
|
624
|
+
},
|
|
625
|
+
"accessTier": "public",
|
|
626
|
+
"obligation": "recommended",
|
|
627
|
+
"legalBasis": "Nothing requires this.",
|
|
628
|
+
"applicability": {
|
|
629
|
+
"rule": "always"
|
|
630
|
+
},
|
|
631
|
+
"group": "making",
|
|
632
|
+
"note": "Lacquer, patina, plating, oil. The thing a restorer must not strip by mistake."
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
"key": "notes",
|
|
636
|
+
"pointer": "/notes",
|
|
637
|
+
"label": "Anything else worth recording",
|
|
638
|
+
"valueType": "text",
|
|
639
|
+
"constraints": {
|
|
640
|
+
"maxLength": 1200
|
|
641
|
+
},
|
|
642
|
+
"cardinality": "one",
|
|
643
|
+
"granularity": "model",
|
|
644
|
+
"provenance": {
|
|
645
|
+
"capture": "form",
|
|
646
|
+
"prose": true
|
|
647
|
+
},
|
|
648
|
+
"accessTier": "public",
|
|
649
|
+
"obligation": "optional",
|
|
650
|
+
"legalBasis": "Nothing requires this. It is what keeps a declared profile usable for objects nobody has thought of.",
|
|
651
|
+
"applicability": {
|
|
652
|
+
"rule": "always"
|
|
653
|
+
},
|
|
654
|
+
"group": "making",
|
|
655
|
+
"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."
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
"key": "recycledContent",
|
|
659
|
+
"pointer": "/recycledContent",
|
|
660
|
+
"label": "Recycled content",
|
|
661
|
+
"valueType": "percent",
|
|
662
|
+
"unit": "%",
|
|
663
|
+
"constraints": {
|
|
664
|
+
"minimum": 0,
|
|
665
|
+
"maximum": 100
|
|
666
|
+
},
|
|
667
|
+
"cardinality": "one",
|
|
668
|
+
"granularity": "model",
|
|
669
|
+
"provenance": {
|
|
670
|
+
"capture": "form"
|
|
671
|
+
},
|
|
672
|
+
"accessTier": "public",
|
|
673
|
+
"obligation": "optional",
|
|
674
|
+
"legalBasis": "Nothing requires this. Declared where a maker can substantiate it.",
|
|
675
|
+
"applicability": {
|
|
676
|
+
"rule": "always"
|
|
677
|
+
},
|
|
678
|
+
"group": "making"
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
"key": "substanceStatement",
|
|
682
|
+
"pointer": "/substanceStatement",
|
|
683
|
+
"label": "Substances to handle with care",
|
|
684
|
+
"valueType": "text",
|
|
685
|
+
"constraints": {
|
|
686
|
+
"maxLength": 400
|
|
687
|
+
},
|
|
688
|
+
"cardinality": "one",
|
|
689
|
+
"granularity": "model",
|
|
690
|
+
"provenance": {
|
|
691
|
+
"capture": "form",
|
|
692
|
+
"prose": true
|
|
693
|
+
},
|
|
694
|
+
"accessTier": "public",
|
|
695
|
+
"obligation": "recommended",
|
|
696
|
+
"legalBasis": "Nothing requires this here, though REACH Art. 33 may require it of the article itself.",
|
|
697
|
+
"applicability": {
|
|
698
|
+
"rule": "always"
|
|
699
|
+
},
|
|
700
|
+
"group": "making",
|
|
701
|
+
"note": "Lead solder, shellac, cadmium in old plating. Prose, because the reader is a person."
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
"key": "careNote",
|
|
705
|
+
"pointer": "/careNote",
|
|
706
|
+
"label": "How to look after it",
|
|
707
|
+
"valueType": "text",
|
|
708
|
+
"constraints": {
|
|
709
|
+
"maxLength": 600
|
|
710
|
+
},
|
|
711
|
+
"cardinality": "one",
|
|
712
|
+
"granularity": "model",
|
|
713
|
+
"provenance": {
|
|
714
|
+
"capture": "form",
|
|
715
|
+
"prose": true
|
|
716
|
+
},
|
|
717
|
+
"accessTier": "public",
|
|
718
|
+
"obligation": "required",
|
|
719
|
+
"legalBasis": "Nothing requires this. It is the single field most likely to extend the object’s life.",
|
|
720
|
+
"applicability": {
|
|
721
|
+
"rule": "always"
|
|
722
|
+
},
|
|
723
|
+
"supersedes": "care",
|
|
724
|
+
"group": "durability",
|
|
725
|
+
"note": "The advice a maker gives when they hand it over, which no symbol set carries."
|
|
726
|
+
},
|
|
727
|
+
{
|
|
728
|
+
"key": "serviceInterval",
|
|
729
|
+
"pointer": "/serviceInterval",
|
|
730
|
+
"label": "Service interval",
|
|
731
|
+
"valueType": "text",
|
|
732
|
+
"constraints": {
|
|
733
|
+
"maxLength": 120
|
|
734
|
+
},
|
|
735
|
+
"cardinality": "one",
|
|
736
|
+
"granularity": "model",
|
|
737
|
+
"provenance": {
|
|
738
|
+
"capture": "form",
|
|
739
|
+
"prose": true
|
|
740
|
+
},
|
|
741
|
+
"accessTier": "public",
|
|
742
|
+
"obligation": "recommended",
|
|
743
|
+
"legalBasis": "Nothing requires this.",
|
|
744
|
+
"applicability": {
|
|
745
|
+
"rule": "always"
|
|
746
|
+
},
|
|
747
|
+
"group": "durability",
|
|
748
|
+
"note": "Every five years, every 5,000 km, after every season. No one unit fits."
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
"key": "expectedLifetime",
|
|
752
|
+
"pointer": "/expectedLifetime",
|
|
753
|
+
"label": "Expected lifetime",
|
|
754
|
+
"valueType": "integer",
|
|
755
|
+
"unit": "years",
|
|
756
|
+
"constraints": {
|
|
757
|
+
"minimum": 1,
|
|
758
|
+
"maximum": 500,
|
|
759
|
+
"step": 1
|
|
760
|
+
},
|
|
761
|
+
"cardinality": "one",
|
|
762
|
+
"granularity": "model",
|
|
763
|
+
"provenance": {
|
|
764
|
+
"capture": "form"
|
|
765
|
+
},
|
|
766
|
+
"accessTier": "public",
|
|
767
|
+
"obligation": "recommended",
|
|
768
|
+
"legalBasis": "Nothing requires this. A claim made here is one the maker can be held to.",
|
|
769
|
+
"applicability": {
|
|
770
|
+
"rule": "always"
|
|
771
|
+
},
|
|
772
|
+
"group": "durability"
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
"key": "guarantee",
|
|
776
|
+
"pointer": "/guarantee",
|
|
777
|
+
"label": "Guarantee",
|
|
778
|
+
"valueType": "integer",
|
|
779
|
+
"unit": "months",
|
|
780
|
+
"constraints": {
|
|
781
|
+
"minimum": 0,
|
|
782
|
+
"maximum": 1200,
|
|
783
|
+
"step": 1
|
|
784
|
+
},
|
|
785
|
+
"cardinality": "one",
|
|
786
|
+
"granularity": "model",
|
|
787
|
+
"provenance": {
|
|
788
|
+
"capture": "form"
|
|
789
|
+
},
|
|
790
|
+
"accessTier": "public",
|
|
791
|
+
"obligation": "recommended",
|
|
792
|
+
"legalBasis": "Nothing requires the figure, though a stated commercial guarantee binds the maker.",
|
|
793
|
+
"applicability": {
|
|
794
|
+
"rule": "always"
|
|
795
|
+
},
|
|
796
|
+
"group": "durability"
|
|
797
|
+
},
|
|
798
|
+
{
|
|
799
|
+
"key": "guaranteeTerms",
|
|
800
|
+
"pointer": "/guaranteeTerms",
|
|
801
|
+
"label": "Guarantee terms",
|
|
802
|
+
"valueType": "document",
|
|
803
|
+
"cardinality": "one",
|
|
804
|
+
"granularity": "model",
|
|
805
|
+
"provenance": {
|
|
806
|
+
"capture": "form"
|
|
807
|
+
},
|
|
808
|
+
"accessTier": "public",
|
|
809
|
+
"obligation": "recommended",
|
|
810
|
+
"legalBasis": "Nothing requires this. A term with no conditions attached is not a guarantee.",
|
|
811
|
+
"applicability": {
|
|
812
|
+
"rule": "always"
|
|
813
|
+
},
|
|
814
|
+
"group": "durability"
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
"key": "repairability",
|
|
818
|
+
"pointer": "/repairability",
|
|
819
|
+
"label": "What can be repaired",
|
|
820
|
+
"valueType": "text",
|
|
821
|
+
"constraints": {
|
|
822
|
+
"maxLength": 400
|
|
823
|
+
},
|
|
824
|
+
"cardinality": "one",
|
|
825
|
+
"granularity": "model",
|
|
826
|
+
"provenance": {
|
|
827
|
+
"capture": "form",
|
|
828
|
+
"prose": true
|
|
829
|
+
},
|
|
830
|
+
"accessTier": "public",
|
|
831
|
+
"obligation": "recommended",
|
|
832
|
+
"legalBasis": "Nothing requires this.",
|
|
833
|
+
"applicability": {
|
|
834
|
+
"rule": "always"
|
|
835
|
+
},
|
|
836
|
+
"group": "repair",
|
|
837
|
+
"note": "Which parts come off, and what needs the workshop. A score would say less."
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
"key": "spareParts",
|
|
841
|
+
"pointer": "/spareParts",
|
|
842
|
+
"label": "Spare parts",
|
|
843
|
+
"valueType": "text",
|
|
844
|
+
"constraints": {
|
|
845
|
+
"maxLength": 300
|
|
846
|
+
},
|
|
847
|
+
"cardinality": "one",
|
|
848
|
+
"granularity": "model",
|
|
849
|
+
"provenance": {
|
|
850
|
+
"capture": "form",
|
|
851
|
+
"prose": true
|
|
852
|
+
},
|
|
853
|
+
"accessTier": "public",
|
|
854
|
+
"obligation": "recommended",
|
|
855
|
+
"legalBasis": "Nothing requires this. It is what decides whether the object outlives its owner.",
|
|
856
|
+
"applicability": {
|
|
857
|
+
"rule": "always"
|
|
858
|
+
},
|
|
859
|
+
"group": "repair",
|
|
860
|
+
"note": "Which parts, and for how long. A yes/no would hide the part that matters."
|
|
861
|
+
},
|
|
862
|
+
{
|
|
863
|
+
"key": "repairInstructions",
|
|
864
|
+
"pointer": "/repairInstructions",
|
|
865
|
+
"label": "Repair notes",
|
|
866
|
+
"valueType": "document",
|
|
867
|
+
"cardinality": "one",
|
|
868
|
+
"granularity": "model",
|
|
869
|
+
"provenance": {
|
|
870
|
+
"capture": "form"
|
|
871
|
+
},
|
|
872
|
+
"accessTier": "public",
|
|
873
|
+
"obligation": "recommended",
|
|
874
|
+
"legalBasis": "Nothing requires this.",
|
|
875
|
+
"applicability": {
|
|
876
|
+
"rule": "always"
|
|
877
|
+
},
|
|
878
|
+
"group": "repair"
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
"key": "repairServices",
|
|
882
|
+
"pointer": "/repairServices",
|
|
883
|
+
"label": "Where to get it repaired",
|
|
884
|
+
"valueType": "url",
|
|
885
|
+
"cardinality": "one",
|
|
886
|
+
"granularity": "model",
|
|
887
|
+
"provenance": {
|
|
888
|
+
"capture": "form"
|
|
889
|
+
},
|
|
890
|
+
"accessTier": "public",
|
|
891
|
+
"obligation": "recommended",
|
|
892
|
+
"legalBasis": "Nothing requires this.",
|
|
893
|
+
"applicability": {
|
|
894
|
+
"rule": "always"
|
|
895
|
+
},
|
|
896
|
+
"group": "repair"
|
|
897
|
+
},
|
|
898
|
+
{
|
|
899
|
+
"key": "serviceNotes",
|
|
900
|
+
"pointer": "/serviceNotes",
|
|
901
|
+
"label": "Workshop notes",
|
|
902
|
+
"valueType": "text",
|
|
903
|
+
"constraints": {
|
|
904
|
+
"maxLength": 600
|
|
905
|
+
},
|
|
906
|
+
"cardinality": "one",
|
|
907
|
+
"granularity": "model",
|
|
908
|
+
"provenance": {
|
|
909
|
+
"capture": "form",
|
|
910
|
+
"prose": true
|
|
911
|
+
},
|
|
912
|
+
"accessTier": "legitimate",
|
|
913
|
+
"obligation": "recommended",
|
|
914
|
+
"legalBasis": "Nothing requires this. Restricted because it is useless to a consumer and valuable to a repairer.",
|
|
915
|
+
"applicability": {
|
|
916
|
+
"rule": "always"
|
|
917
|
+
},
|
|
918
|
+
"group": "repair",
|
|
919
|
+
"note": "Torque figures, thread sizes, the fixture that releases the part. Written for a trade, not a buyer."
|
|
920
|
+
},
|
|
921
|
+
{
|
|
922
|
+
"key": "collection",
|
|
923
|
+
"pointer": "/collection",
|
|
924
|
+
"label": "Where to return it",
|
|
925
|
+
"valueType": "text",
|
|
926
|
+
"constraints": {
|
|
927
|
+
"maxLength": 400
|
|
928
|
+
},
|
|
929
|
+
"cardinality": "one",
|
|
930
|
+
"granularity": "model",
|
|
931
|
+
"provenance": {
|
|
932
|
+
"capture": "form",
|
|
933
|
+
"prose": true
|
|
934
|
+
},
|
|
935
|
+
"accessTier": "public",
|
|
936
|
+
"obligation": "recommended",
|
|
937
|
+
"legalBasis": "Nothing requires this. A maker who takes it back says so here.",
|
|
938
|
+
"applicability": {
|
|
939
|
+
"rule": "always"
|
|
940
|
+
},
|
|
941
|
+
"group": "endOfLife",
|
|
942
|
+
"note": "A place and a method, in the words the person returning it will use."
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
"key": "recyclability",
|
|
946
|
+
"pointer": "/recyclability",
|
|
947
|
+
"label": "What can be recovered",
|
|
948
|
+
"valueType": "text",
|
|
949
|
+
"constraints": {
|
|
950
|
+
"maxLength": 400
|
|
951
|
+
},
|
|
952
|
+
"cardinality": "one",
|
|
953
|
+
"granularity": "model",
|
|
954
|
+
"provenance": {
|
|
955
|
+
"capture": "form",
|
|
956
|
+
"prose": true
|
|
957
|
+
},
|
|
958
|
+
"accessTier": "public",
|
|
959
|
+
"obligation": "recommended",
|
|
960
|
+
"legalBasis": "Nothing requires this.",
|
|
961
|
+
"applicability": {
|
|
962
|
+
"rule": "always"
|
|
963
|
+
},
|
|
964
|
+
"group": "endOfLife",
|
|
965
|
+
"note": "What a recycler can actually do with it, which no percentage conveys."
|
|
966
|
+
},
|
|
967
|
+
{
|
|
968
|
+
"key": "separability",
|
|
969
|
+
"pointer": "/separability",
|
|
970
|
+
"label": "What comes apart",
|
|
971
|
+
"valueType": "text",
|
|
972
|
+
"constraints": {
|
|
973
|
+
"maxLength": 300
|
|
974
|
+
},
|
|
975
|
+
"cardinality": "one",
|
|
976
|
+
"granularity": "model",
|
|
977
|
+
"provenance": {
|
|
978
|
+
"capture": "form",
|
|
979
|
+
"prose": true
|
|
980
|
+
},
|
|
981
|
+
"accessTier": "legitimate",
|
|
982
|
+
"obligation": "recommended",
|
|
983
|
+
"legalBasis": "Nothing requires this.",
|
|
984
|
+
"applicability": {
|
|
985
|
+
"rule": "always"
|
|
986
|
+
},
|
|
987
|
+
"group": "endOfLife",
|
|
988
|
+
"note": "Which components separate, and how. The sentence a dismantler needs."
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
"key": "supplyChain",
|
|
992
|
+
"pointer": "/supplyChain",
|
|
993
|
+
"label": "Supply chain",
|
|
994
|
+
"valueType": "record",
|
|
995
|
+
"cardinality": "many",
|
|
996
|
+
"granularity": "model",
|
|
997
|
+
"provenance": {
|
|
998
|
+
"capture": "form"
|
|
999
|
+
},
|
|
1000
|
+
"accessTier": "public",
|
|
1001
|
+
"obligation": "optional",
|
|
1002
|
+
"legalBasis": "Nothing requires this. Declared by makers who treat their suppliers as a credential.",
|
|
1003
|
+
"applicability": {
|
|
1004
|
+
"rule": "always"
|
|
1005
|
+
},
|
|
1006
|
+
"group": "supply",
|
|
1007
|
+
"parts": [
|
|
1008
|
+
{
|
|
1009
|
+
"key": "stage",
|
|
1010
|
+
"label": "Stage",
|
|
1011
|
+
"valueType": "text",
|
|
1012
|
+
"required": true
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
"key": "country",
|
|
1016
|
+
"label": "Country",
|
|
1017
|
+
"valueType": "country",
|
|
1018
|
+
"constraints": {
|
|
1019
|
+
"pattern": "^[A-Z]{2}$",
|
|
1020
|
+
"patternHint": "a two-letter country code"
|
|
1021
|
+
},
|
|
1022
|
+
"required": true
|
|
1023
|
+
},
|
|
1024
|
+
{
|
|
1025
|
+
"key": "facility",
|
|
1026
|
+
"label": "Workshop or supplier",
|
|
1027
|
+
"valueType": "text"
|
|
1028
|
+
}
|
|
1029
|
+
]
|
|
1030
|
+
},
|
|
1031
|
+
{
|
|
1032
|
+
"key": "certifications",
|
|
1033
|
+
"pointer": "/certifications",
|
|
1034
|
+
"label": "Independent certification",
|
|
1035
|
+
"valueType": "multi",
|
|
1036
|
+
"codeList": {
|
|
1037
|
+
"closed": false,
|
|
1038
|
+
"options": []
|
|
1039
|
+
},
|
|
1040
|
+
"cardinality": "one",
|
|
1041
|
+
"granularity": "model",
|
|
1042
|
+
"provenance": {
|
|
1043
|
+
"capture": "form"
|
|
1044
|
+
},
|
|
1045
|
+
"accessTier": "public",
|
|
1046
|
+
"obligation": "optional",
|
|
1047
|
+
"legalBasis": "Nothing requires this.",
|
|
1048
|
+
"applicability": {
|
|
1049
|
+
"rule": "always"
|
|
1050
|
+
},
|
|
1051
|
+
"group": "supply",
|
|
1052
|
+
"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."
|
|
1053
|
+
},
|
|
1054
|
+
{
|
|
1055
|
+
"key": "provenance",
|
|
1056
|
+
"pointer": "/provenance",
|
|
1057
|
+
"label": "Provenance",
|
|
1058
|
+
"valueType": "text",
|
|
1059
|
+
"constraints": {
|
|
1060
|
+
"maxLength": 600
|
|
1061
|
+
},
|
|
1062
|
+
"cardinality": "one",
|
|
1063
|
+
"granularity": "item",
|
|
1064
|
+
"provenance": {
|
|
1065
|
+
"capture": "form",
|
|
1066
|
+
"prose": true
|
|
1067
|
+
},
|
|
1068
|
+
"accessTier": "owner",
|
|
1069
|
+
"obligation": "optional",
|
|
1070
|
+
"legalBasis": "Nothing requires this. It is the owner tier the selective-disclosure demo turns on.",
|
|
1071
|
+
"applicability": {
|
|
1072
|
+
"rule": "always"
|
|
1073
|
+
},
|
|
1074
|
+
"supersedes": "provenance",
|
|
1075
|
+
"group": "owner",
|
|
1076
|
+
"note": "The story of this particular object, which is prose by definition."
|
|
1077
|
+
},
|
|
1078
|
+
{
|
|
1079
|
+
"key": "purchase",
|
|
1080
|
+
"pointer": "/purchase",
|
|
1081
|
+
"label": "Purchased",
|
|
1082
|
+
"valueType": "text",
|
|
1083
|
+
"constraints": {
|
|
1084
|
+
"maxLength": 200
|
|
1085
|
+
},
|
|
1086
|
+
"cardinality": "one",
|
|
1087
|
+
"granularity": "item",
|
|
1088
|
+
"provenance": {
|
|
1089
|
+
"capture": "form",
|
|
1090
|
+
"prose": true
|
|
1091
|
+
},
|
|
1092
|
+
"accessTier": "owner",
|
|
1093
|
+
"obligation": "optional",
|
|
1094
|
+
"legalBasis": "Nothing requires this. It is what makes the record theirs.",
|
|
1095
|
+
"applicability": {
|
|
1096
|
+
"rule": "always"
|
|
1097
|
+
},
|
|
1098
|
+
"group": "owner",
|
|
1099
|
+
"note": "Where and when, as the owner would write it."
|
|
1100
|
+
},
|
|
1101
|
+
{
|
|
1102
|
+
"key": "personalisation",
|
|
1103
|
+
"pointer": "/personalisation",
|
|
1104
|
+
"label": "Fitting and setup",
|
|
1105
|
+
"valueType": "text",
|
|
1106
|
+
"constraints": {
|
|
1107
|
+
"maxLength": 300
|
|
1108
|
+
},
|
|
1109
|
+
"cardinality": "one",
|
|
1110
|
+
"granularity": "item",
|
|
1111
|
+
"provenance": {
|
|
1112
|
+
"capture": "form",
|
|
1113
|
+
"prose": true
|
|
1114
|
+
},
|
|
1115
|
+
"accessTier": "owner",
|
|
1116
|
+
"obligation": "optional",
|
|
1117
|
+
"legalBasis": "Nothing requires this. A fitted object is a different object to its owner.",
|
|
1118
|
+
"applicability": {
|
|
1119
|
+
"rule": "always"
|
|
1120
|
+
},
|
|
1121
|
+
"supersedes": "personalisation",
|
|
1122
|
+
"group": "owner",
|
|
1123
|
+
"note": "Saddle height, string gauge, engraving. Written by whoever set it up."
|
|
1124
|
+
},
|
|
1125
|
+
{
|
|
1126
|
+
"key": "valuation",
|
|
1127
|
+
"pointer": "/valuation",
|
|
1128
|
+
"label": "Valuation reference",
|
|
1129
|
+
"valueType": "text",
|
|
1130
|
+
"constraints": {
|
|
1131
|
+
"maxLength": 160
|
|
1132
|
+
},
|
|
1133
|
+
"cardinality": "one",
|
|
1134
|
+
"granularity": "item",
|
|
1135
|
+
"provenance": {
|
|
1136
|
+
"capture": "form",
|
|
1137
|
+
"prose": true
|
|
1138
|
+
},
|
|
1139
|
+
"accessTier": "owner",
|
|
1140
|
+
"obligation": "optional",
|
|
1141
|
+
"legalBasis": "Nothing requires this. Owner tier only, and no figure ever reaches the public payload.",
|
|
1142
|
+
"applicability": {
|
|
1143
|
+
"rule": "always"
|
|
1144
|
+
},
|
|
1145
|
+
"group": "owner",
|
|
1146
|
+
"note": "An insurer’s reference or an appraisal note. Never a price on the public record."
|
|
1147
|
+
}
|
|
1148
|
+
],
|
|
1149
|
+
"eventMappings": [
|
|
1150
|
+
{
|
|
1151
|
+
"nativeOperation": "ACTIVATE",
|
|
1152
|
+
"eventType": "Origin",
|
|
1153
|
+
"externalEvent": "manufacture or commissioning",
|
|
1154
|
+
"requires": "manufacturing or commissioning evidence naming the facility, time and responsible party; the native ACTIVATE alone records only that a passport was opened",
|
|
1155
|
+
"withoutEvidence": "insufficient-data"
|
|
1156
|
+
},
|
|
1157
|
+
{
|
|
1158
|
+
"nativeOperation": "SOLD",
|
|
1159
|
+
"eventType": "Transfer",
|
|
1160
|
+
"externalEvent": "physical move or change of custody",
|
|
1161
|
+
"requires": "actual source and destination movement or custody evidence; a change of token control is not a shipment",
|
|
1162
|
+
"withoutEvidence": "insufficient-data"
|
|
1163
|
+
},
|
|
1164
|
+
{
|
|
1165
|
+
"nativeOperation": "RESOLD",
|
|
1166
|
+
"eventType": "Transfer",
|
|
1167
|
+
"externalEvent": "physical move or change of custody",
|
|
1168
|
+
"requires": "actual source and destination movement or custody evidence",
|
|
1169
|
+
"withoutEvidence": "insufficient-data"
|
|
1170
|
+
},
|
|
1171
|
+
{
|
|
1172
|
+
"nativeOperation": "TRANSFER",
|
|
1173
|
+
"eventType": "Transfer",
|
|
1174
|
+
"externalEvent": "change of custody",
|
|
1175
|
+
"requires": "custody evidence beyond the token transfer; the transfer of token control alone establishes neither physical movement nor legal title",
|
|
1176
|
+
"withoutEvidence": "insufficient-data"
|
|
1177
|
+
},
|
|
1178
|
+
{
|
|
1179
|
+
"nativeOperation": "REPAIRED",
|
|
1180
|
+
"eventType": "Transformation",
|
|
1181
|
+
"externalEvent": "modification (repair)",
|
|
1182
|
+
"requires": "repair evidence naming what was done, by whom and when",
|
|
1183
|
+
"withoutEvidence": "insufficient-data"
|
|
1184
|
+
},
|
|
1185
|
+
{
|
|
1186
|
+
"nativeOperation": "EDIT",
|
|
1187
|
+
"eventType": "Transformation",
|
|
1188
|
+
"externalEvent": "metadata revision",
|
|
1189
|
+
"requires": "nothing physical: an EDIT is a native metadata operation and maps to a record revision, not a physical transformation",
|
|
1190
|
+
"withoutEvidence": "transformed"
|
|
1191
|
+
},
|
|
1192
|
+
{
|
|
1193
|
+
"nativeOperation": "RECYCLED",
|
|
1194
|
+
"eventType": "Disposition",
|
|
1195
|
+
"externalEvent": "disposition, or a process creating new products or materials",
|
|
1196
|
+
"requires": "recycling evidence distinguishing disposition of this item from a process whose outputs carry new identities",
|
|
1197
|
+
"withoutEvidence": "insufficient-data"
|
|
1198
|
+
}
|
|
1199
|
+
],
|
|
1200
|
+
"sourceRefs": [
|
|
1201
|
+
{
|
|
1202
|
+
"id": "none",
|
|
1203
|
+
"name": "Nothing. No instrument requires a passport for these products, and none is cited as if one did; every field states that in its legalRef.",
|
|
1204
|
+
"use": "The honest statement of legal basis."
|
|
1205
|
+
},
|
|
1206
|
+
{
|
|
1207
|
+
"id": "shape",
|
|
1208
|
+
"name": "The shape follows the regulated profiles so a maker who later falls in scope is already close to it.",
|
|
1209
|
+
"use": "Design intent."
|
|
1210
|
+
},
|
|
1211
|
+
{
|
|
1212
|
+
"id": "iso3166",
|
|
1213
|
+
"name": "ISO 3166-1 alpha-2",
|
|
1214
|
+
"reference": "ISO 3166-1",
|
|
1215
|
+
"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.",
|
|
1216
|
+
"fields": [
|
|
1217
|
+
"manufacturingPlace.country",
|
|
1218
|
+
"materials.origin",
|
|
1219
|
+
"supplyChain.country"
|
|
1220
|
+
]
|
|
1221
|
+
}
|
|
1222
|
+
],
|
|
1223
|
+
"groups": [
|
|
1224
|
+
{
|
|
1225
|
+
"id": "identification",
|
|
1226
|
+
"title": "Identification"
|
|
1227
|
+
},
|
|
1228
|
+
{
|
|
1229
|
+
"id": "provenance",
|
|
1230
|
+
"title": "Provenance and authenticity"
|
|
1231
|
+
},
|
|
1232
|
+
{
|
|
1233
|
+
"id": "making",
|
|
1234
|
+
"title": "What it is made of"
|
|
1235
|
+
},
|
|
1236
|
+
{
|
|
1237
|
+
"id": "durability",
|
|
1238
|
+
"title": "Care and guarantee"
|
|
1239
|
+
},
|
|
1240
|
+
{
|
|
1241
|
+
"id": "repair",
|
|
1242
|
+
"title": "Repair and parts"
|
|
1243
|
+
},
|
|
1244
|
+
{
|
|
1245
|
+
"id": "endOfLife",
|
|
1246
|
+
"title": "End of life"
|
|
1247
|
+
},
|
|
1248
|
+
{
|
|
1249
|
+
"id": "supply",
|
|
1250
|
+
"title": "Supply chain"
|
|
1251
|
+
},
|
|
1252
|
+
{
|
|
1253
|
+
"id": "owner",
|
|
1254
|
+
"title": "Private to you"
|
|
1255
|
+
}
|
|
1256
|
+
],
|
|
1257
|
+
"identity": {
|
|
1258
|
+
"passportIdentifier": "A GS1 Digital Link URI carrying the GTIN under application identifier 01 and the serial under 21 (spec/record-model.md section 3); the enduring identifier never changes across the chain.",
|
|
1259
|
+
"granularities": [
|
|
1260
|
+
"item",
|
|
1261
|
+
"model"
|
|
1262
|
+
],
|
|
1263
|
+
"modelIdentifier": "name",
|
|
1264
|
+
"parentRelations": []
|
|
1265
|
+
}
|
|
1266
|
+
}
|