@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,347 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://bsv-blockchain.github.io/dpp/profiles/schemas/interoperability-profile.schema.json",
|
|
4
|
+
"title": "DPP interoperability profile manifest, version 1",
|
|
5
|
+
"description": "One named, versioned selection of how a passport is discovered, how source events are exchanged, or how a source event is mapped into an existing credential profile (spec/gs1-discovery.md, spec/epcis-interoperability.md). Neither an industry profile nor a signed credential format: it records the role, the standards and artefact versions it pins, the formats it accepts and produces, its dependencies, its resource limits, what it cannot map and what it does not support. An artefact without a digest is recorded as not retrieved and supports no claim.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"manifestVersion",
|
|
10
|
+
"id",
|
|
11
|
+
"version",
|
|
12
|
+
"profile",
|
|
13
|
+
"kind",
|
|
14
|
+
"role",
|
|
15
|
+
"status",
|
|
16
|
+
"title",
|
|
17
|
+
"standards",
|
|
18
|
+
"artefacts",
|
|
19
|
+
"inputs",
|
|
20
|
+
"outputs",
|
|
21
|
+
"dependencies",
|
|
22
|
+
"limits",
|
|
23
|
+
"mappingLimits",
|
|
24
|
+
"unsupported",
|
|
25
|
+
"sourceRefs"
|
|
26
|
+
],
|
|
27
|
+
"properties": {
|
|
28
|
+
"manifestVersion": {
|
|
29
|
+
"const": "1"
|
|
30
|
+
},
|
|
31
|
+
"id": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"pattern": "^[a-z][a-z0-9.-]*$"
|
|
34
|
+
},
|
|
35
|
+
"version": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"pattern": "^[0-9][0-9a-z.-]*$"
|
|
38
|
+
},
|
|
39
|
+
"profile": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^[a-z][a-z0-9.-]*@[0-9][0-9a-z.-]*$"
|
|
42
|
+
},
|
|
43
|
+
"kind": {
|
|
44
|
+
"const": "interoperability"
|
|
45
|
+
},
|
|
46
|
+
"role": {
|
|
47
|
+
"enum": [
|
|
48
|
+
"discovery",
|
|
49
|
+
"source-exchange",
|
|
50
|
+
"mapping"
|
|
51
|
+
],
|
|
52
|
+
"description": "discovery: resolving an identifier to services. source-exchange: importing, querying, retaining and exporting source documents. mapping: projecting a retained source into an existing credential or data profile."
|
|
53
|
+
},
|
|
54
|
+
"status": {
|
|
55
|
+
"enum": [
|
|
56
|
+
"proposed",
|
|
57
|
+
"current",
|
|
58
|
+
"superseded"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"supersededBy": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"pattern": "^[a-z][a-z0-9.-]*@[0-9][0-9a-z.-]*$"
|
|
64
|
+
},
|
|
65
|
+
"title": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"minLength": 1
|
|
68
|
+
},
|
|
69
|
+
"description": {
|
|
70
|
+
"type": "string"
|
|
71
|
+
},
|
|
72
|
+
"specification": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"description": "Where in spec/ the profile's normative behaviour is defined."
|
|
75
|
+
},
|
|
76
|
+
"standards": {
|
|
77
|
+
"type": "array",
|
|
78
|
+
"minItems": 1,
|
|
79
|
+
"items": {
|
|
80
|
+
"type": "object",
|
|
81
|
+
"additionalProperties": false,
|
|
82
|
+
"required": [
|
|
83
|
+
"id",
|
|
84
|
+
"name",
|
|
85
|
+
"version",
|
|
86
|
+
"uri"
|
|
87
|
+
],
|
|
88
|
+
"properties": {
|
|
89
|
+
"id": {
|
|
90
|
+
"type": "string"
|
|
91
|
+
},
|
|
92
|
+
"name": {
|
|
93
|
+
"type": "string"
|
|
94
|
+
},
|
|
95
|
+
"version": {
|
|
96
|
+
"type": "string"
|
|
97
|
+
},
|
|
98
|
+
"uri": {
|
|
99
|
+
"type": "string"
|
|
100
|
+
},
|
|
101
|
+
"scope": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"description": "The clauses or capabilities of the standard this profile claims, in words."
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"artefacts": {
|
|
109
|
+
"type": "array",
|
|
110
|
+
"items": {
|
|
111
|
+
"type": "object",
|
|
112
|
+
"additionalProperties": false,
|
|
113
|
+
"required": [
|
|
114
|
+
"id",
|
|
115
|
+
"kind",
|
|
116
|
+
"uri",
|
|
117
|
+
"version",
|
|
118
|
+
"retrieval"
|
|
119
|
+
],
|
|
120
|
+
"properties": {
|
|
121
|
+
"id": {
|
|
122
|
+
"type": "string"
|
|
123
|
+
},
|
|
124
|
+
"kind": {
|
|
125
|
+
"enum": [
|
|
126
|
+
"json-schema",
|
|
127
|
+
"jsonld-context",
|
|
128
|
+
"openapi",
|
|
129
|
+
"vocabulary",
|
|
130
|
+
"specification",
|
|
131
|
+
"grammar"
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
"uri": {
|
|
135
|
+
"type": "string"
|
|
136
|
+
},
|
|
137
|
+
"version": {
|
|
138
|
+
"type": "string"
|
|
139
|
+
},
|
|
140
|
+
"digest": {
|
|
141
|
+
"type": "string",
|
|
142
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
143
|
+
},
|
|
144
|
+
"byteLength": {
|
|
145
|
+
"type": "integer",
|
|
146
|
+
"minimum": 0
|
|
147
|
+
},
|
|
148
|
+
"retrieval": {
|
|
149
|
+
"enum": [
|
|
150
|
+
"pinned",
|
|
151
|
+
"not-retrieved",
|
|
152
|
+
"unavailable",
|
|
153
|
+
"owned"
|
|
154
|
+
],
|
|
155
|
+
"description": "pinned: digest computed over retrieved bytes. not-retrieved: documented location, no bytes fetched. unavailable: the upstream location does not serve it. owned: published by this repository."
|
|
156
|
+
},
|
|
157
|
+
"carried": {
|
|
158
|
+
"type": "string",
|
|
159
|
+
"description": "The package path the pinned bytes are carried at, when they are."
|
|
160
|
+
},
|
|
161
|
+
"licence": {
|
|
162
|
+
"type": "string"
|
|
163
|
+
},
|
|
164
|
+
"notes": {
|
|
165
|
+
"type": "string"
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"allOf": [
|
|
169
|
+
{
|
|
170
|
+
"if": {
|
|
171
|
+
"properties": {
|
|
172
|
+
"retrieval": {
|
|
173
|
+
"const": "pinned"
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
"then": {
|
|
178
|
+
"properties": {
|
|
179
|
+
"digest": {
|
|
180
|
+
"type": "string"
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"required": [
|
|
184
|
+
"digest"
|
|
185
|
+
]
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"inputs": {
|
|
192
|
+
"type": "array",
|
|
193
|
+
"items": {
|
|
194
|
+
"$ref": "#/$defs/format"
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
"outputs": {
|
|
198
|
+
"type": "array",
|
|
199
|
+
"items": {
|
|
200
|
+
"$ref": "#/$defs/format"
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"dependencies": {
|
|
204
|
+
"type": "array",
|
|
205
|
+
"description": "The maintained implementations this profile's reference code relies on, with the exact version tested; an empty list means the reference code is self-contained.",
|
|
206
|
+
"items": {
|
|
207
|
+
"type": "object",
|
|
208
|
+
"additionalProperties": false,
|
|
209
|
+
"required": [
|
|
210
|
+
"name",
|
|
211
|
+
"version"
|
|
212
|
+
],
|
|
213
|
+
"properties": {
|
|
214
|
+
"name": {
|
|
215
|
+
"type": "string"
|
|
216
|
+
},
|
|
217
|
+
"version": {
|
|
218
|
+
"type": "string"
|
|
219
|
+
},
|
|
220
|
+
"licence": {
|
|
221
|
+
"type": "string"
|
|
222
|
+
},
|
|
223
|
+
"use": {
|
|
224
|
+
"type": "string"
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
"limits": {
|
|
230
|
+
"type": "object",
|
|
231
|
+
"description": "Named resource limits the reference implementation enforces and discloses, for example maxDocumentBytes, maxEventsPerPage, maxJsonDepth, fetchTimeoutMs.",
|
|
232
|
+
"additionalProperties": {
|
|
233
|
+
"type": [
|
|
234
|
+
"integer",
|
|
235
|
+
"string"
|
|
236
|
+
]
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
"mappingLimits": {
|
|
240
|
+
"type": "array",
|
|
241
|
+
"description": "What this profile cannot express losslessly, each named so a mapping result can cite it.",
|
|
242
|
+
"items": {
|
|
243
|
+
"type": "object",
|
|
244
|
+
"additionalProperties": false,
|
|
245
|
+
"required": [
|
|
246
|
+
"id",
|
|
247
|
+
"outcome",
|
|
248
|
+
"reason"
|
|
249
|
+
],
|
|
250
|
+
"properties": {
|
|
251
|
+
"id": {
|
|
252
|
+
"type": "string"
|
|
253
|
+
},
|
|
254
|
+
"outcome": {
|
|
255
|
+
"enum": [
|
|
256
|
+
"transformed",
|
|
257
|
+
"unsupported",
|
|
258
|
+
"insufficient-data"
|
|
259
|
+
]
|
|
260
|
+
},
|
|
261
|
+
"reason": {
|
|
262
|
+
"type": "string"
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
"unsupported": {
|
|
268
|
+
"type": "array",
|
|
269
|
+
"items": {
|
|
270
|
+
"type": "object",
|
|
271
|
+
"additionalProperties": false,
|
|
272
|
+
"required": [
|
|
273
|
+
"id",
|
|
274
|
+
"reason"
|
|
275
|
+
],
|
|
276
|
+
"properties": {
|
|
277
|
+
"id": {
|
|
278
|
+
"type": "string"
|
|
279
|
+
},
|
|
280
|
+
"reason": {
|
|
281
|
+
"type": "string"
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
"sourceRefs": {
|
|
287
|
+
"type": "array",
|
|
288
|
+
"items": {
|
|
289
|
+
"type": "object",
|
|
290
|
+
"additionalProperties": false,
|
|
291
|
+
"required": [
|
|
292
|
+
"id",
|
|
293
|
+
"name",
|
|
294
|
+
"use"
|
|
295
|
+
],
|
|
296
|
+
"properties": {
|
|
297
|
+
"id": {
|
|
298
|
+
"type": "string"
|
|
299
|
+
},
|
|
300
|
+
"name": {
|
|
301
|
+
"type": "string"
|
|
302
|
+
},
|
|
303
|
+
"reference": {
|
|
304
|
+
"type": "string"
|
|
305
|
+
},
|
|
306
|
+
"version": {
|
|
307
|
+
"type": "string"
|
|
308
|
+
},
|
|
309
|
+
"attribution": {
|
|
310
|
+
"type": "string"
|
|
311
|
+
},
|
|
312
|
+
"use": {
|
|
313
|
+
"type": "string"
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
"$defs": {
|
|
320
|
+
"format": {
|
|
321
|
+
"type": "object",
|
|
322
|
+
"additionalProperties": false,
|
|
323
|
+
"required": [
|
|
324
|
+
"id",
|
|
325
|
+
"mediaType",
|
|
326
|
+
"format"
|
|
327
|
+
],
|
|
328
|
+
"properties": {
|
|
329
|
+
"id": {
|
|
330
|
+
"type": "string"
|
|
331
|
+
},
|
|
332
|
+
"mediaType": {
|
|
333
|
+
"type": "string",
|
|
334
|
+
"minLength": 1
|
|
335
|
+
},
|
|
336
|
+
"format": {
|
|
337
|
+
"type": "string",
|
|
338
|
+
"minLength": 1,
|
|
339
|
+
"description": "The document or message shape, for example EPCISDocument, EPCISQueryDocument, GS1 linkset, resolver description file."
|
|
340
|
+
},
|
|
341
|
+
"notes": {
|
|
342
|
+
"type": "string"
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://bsv-blockchain.github.io/dpp/profiles/schemas/operator-profile.schema.json",
|
|
4
|
+
"title": "DPP operator profile manifest, version 1",
|
|
5
|
+
"description": "One named operator configuration (spec/services.md, spec/conformance.md section 4): how an overlay or registry admits, discovers, synchronises and retains evidence and authorises publishers, and the exercises a deployment passes before it may claim the profile.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["manifestVersion", "id", "version", "profile", "kind", "status", "title", "roles", "admission", "publisherPolicy", "discovery", "synchronisation", "retention", "capabilities", "acceptance", "unsupported"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"manifestVersion": { "const": "1" },
|
|
11
|
+
"id": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
12
|
+
"version": { "type": "integer", "minimum": 1 },
|
|
13
|
+
"profile": { "type": "string", "pattern": "^[a-z][a-z0-9-]*@[0-9]+$" },
|
|
14
|
+
"kind": { "const": "operator" },
|
|
15
|
+
"status": { "enum": ["proposed", "current", "superseded"] },
|
|
16
|
+
"title": { "type": "string", "minLength": 1 },
|
|
17
|
+
"description": { "type": "string" },
|
|
18
|
+
"roles": { "type": "array", "minItems": 1, "items": { "enum": ["overlay", "registry"] } },
|
|
19
|
+
"admission": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"additionalProperties": false,
|
|
22
|
+
"required": ["topics", "nativeRules", "idempotent"],
|
|
23
|
+
"properties": {
|
|
24
|
+
"topics": { "type": "array", "items": { "type": "string" } },
|
|
25
|
+
"nativeRules": { "type": "string" },
|
|
26
|
+
"idempotent": { "const": true },
|
|
27
|
+
"ownerConsent": { "enum": ["not-selected", "required", "deployment-choice"] }
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"publisherPolicy": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"additionalProperties": false,
|
|
33
|
+
"required": ["separateFromOperatorIdentity", "keySet", "historicalAuthorisation", "handover"],
|
|
34
|
+
"properties": {
|
|
35
|
+
"separateFromOperatorIdentity": { "const": true },
|
|
36
|
+
"keySet": { "type": "string", "description": "How the accepted publisher keys are configured, versioned, activated and retired." },
|
|
37
|
+
"historicalAuthorisation": { "type": "string", "description": "How a state's publisher signature is checked against the key that was authorised at its time, never against the current allowlist alone." },
|
|
38
|
+
"handover": { "type": "string", "description": "What a publisher handover requires, and what it can never do to the spending key." }
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"discovery": {
|
|
42
|
+
"type": "object",
|
|
43
|
+
"additionalProperties": false,
|
|
44
|
+
"required": ["mode"],
|
|
45
|
+
"properties": {
|
|
46
|
+
"mode": { "enum": ["none", "ship-slap", "static-peers"] },
|
|
47
|
+
"notes": { "type": "string" }
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"synchronisation": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"additionalProperties": false,
|
|
53
|
+
"required": ["mode", "genesisFirst", "deduplication", "proofUpdates", "checkpoints", "bounds"],
|
|
54
|
+
"properties": {
|
|
55
|
+
"mode": { "enum": ["none", "gasp", "static-peer-backfill"] },
|
|
56
|
+
"genesisFirst": { "const": true },
|
|
57
|
+
"deduplication": { "type": "string" },
|
|
58
|
+
"proofUpdates": { "type": "string" },
|
|
59
|
+
"checkpoints": { "type": "string" },
|
|
60
|
+
"bounds": { "type": "string" },
|
|
61
|
+
"reorganisation": { "type": "string" }
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"retention": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"additionalProperties": false,
|
|
67
|
+
"required": ["spentStates", "anchorLeaves", "bytes"],
|
|
68
|
+
"properties": {
|
|
69
|
+
"spentStates": { "type": "string" },
|
|
70
|
+
"anchorLeaves": { "type": "string" },
|
|
71
|
+
"bytes": { "type": "string" }
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"capabilities": {
|
|
75
|
+
"type": "object",
|
|
76
|
+
"additionalProperties": false,
|
|
77
|
+
"required": ["document", "mustDeclare"],
|
|
78
|
+
"properties": {
|
|
79
|
+
"document": { "type": "string", "description": "The capability document schema the deployment serves." },
|
|
80
|
+
"mustDeclare": { "type": "array", "items": { "type": "string" } }
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"acceptance": {
|
|
84
|
+
"type": "array",
|
|
85
|
+
"minItems": 1,
|
|
86
|
+
"items": {
|
|
87
|
+
"type": "object",
|
|
88
|
+
"additionalProperties": false,
|
|
89
|
+
"required": ["id", "exercise", "evidence", "independence"],
|
|
90
|
+
"properties": {
|
|
91
|
+
"id": { "type": "string" },
|
|
92
|
+
"exercise": { "type": "string" },
|
|
93
|
+
"evidence": { "type": "string" },
|
|
94
|
+
"independence": { "enum": ["local", "independently-administered"], "description": "local: two processes under one administration prove the mechanism. independently-administered: separate organisations, credentials and databases, which no local run can substitute for." }
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"unsupported": {
|
|
99
|
+
"type": "array",
|
|
100
|
+
"items": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"additionalProperties": false,
|
|
103
|
+
"required": ["id", "reason"],
|
|
104
|
+
"properties": { "id": { "type": "string" }, "reason": { "type": "string" } }
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://bsv-blockchain.github.io/dpp/profiles/schemas/product-identity.schema.json",
|
|
4
|
+
"title": "DPP product identity, version 1",
|
|
5
|
+
"description": "The three granularities a passport may relate (spec/profiles.md section 5): the model a manufacturer designs, the batch a production run produces and the item one physical unit is, with the enduring passport identifier that never changes and the resolver location that may.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["passportId", "item"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"passportId": { "type": "string", "minLength": 1, "maxLength": 512, "description": "The enduring passport identifier, exactly as field 3 of the record carries it." },
|
|
11
|
+
"genesisOutpoint": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
14
|
+
"required": ["txid", "outputIndex"],
|
|
15
|
+
"properties": { "txid": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, "outputIndex": { "type": "integer", "minimum": 0 } }
|
|
16
|
+
},
|
|
17
|
+
"item": { "$ref": "#/$defs/identifier" },
|
|
18
|
+
"batch": { "$ref": "#/$defs/identifier" },
|
|
19
|
+
"model": { "$ref": "#/$defs/identifier" },
|
|
20
|
+
"resolver": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"additionalProperties": false,
|
|
23
|
+
"description": "Mutable service metadata: where the identifier is answered today. A change here changes nothing about the identity or the history.",
|
|
24
|
+
"properties": {
|
|
25
|
+
"host": { "type": "string", "format": "hostname" },
|
|
26
|
+
"linkSet": { "type": "string", "format": "uri" },
|
|
27
|
+
"recordedAt": { "type": "string", "format": "date-time" }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"$defs": {
|
|
32
|
+
"identifier": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"additionalProperties": false,
|
|
35
|
+
"required": ["scheme", "value"],
|
|
36
|
+
"properties": {
|
|
37
|
+
"scheme": { "type": "string", "minLength": 1, "description": "For example gs1-gtin, gs1-sgtin, gs1-digital-link, iso-15459, vendor." },
|
|
38
|
+
"value": { "type": "string", "minLength": 1 },
|
|
39
|
+
"authority": { "type": "string", "description": "Who allocated the identifier, when known independently. Syntax never proves allocation." },
|
|
40
|
+
"checkDigitValid": { "type": "boolean", "description": "For GS1 keys: whether the check digit holds. A writer keeps it true; a reader records what it found." },
|
|
41
|
+
"demonstration": { "type": "boolean", "description": "True when the GS1 prefix is 952, the prefix reserved for demonstrations and examples, so nothing real stands behind the record." }
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|