@carrot-foundation/schemas 0.1.34 → 0.1.36
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/README.md +1 -1
- package/dist/index.cjs +1128 -1048
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +737 -81
- package/dist/index.d.ts +737 -81
- package/dist/index.js +1108 -1049
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/schemas/ipfs/gas-id/gas-id.example.json +1 -1
- package/schemas/ipfs/gas-id/gas-id.schema.json +82 -70
- package/schemas/ipfs/mass-id/mass-id.schema.json +56 -45
- package/schemas/ipfs/recycled-id/recycled-id.example.json +9 -8
- package/schemas/ipfs/recycled-id/recycled-id.schema.json +1650 -15
- package/schemas/ipfs/shared/definitions/definitions.schema.json +10 -0
- package/schemas/ipfs/shared/entities/location/location.schema.json +10 -10
|
@@ -1,29 +1,1664 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://raw.githubusercontent.com/carrot-foundation/schemas/refs/heads/main/schemas/ipfs/recycled-id/recycled-id.schema.json",
|
|
4
3
|
"title": "RecycledID NFT IPFS Record",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
"description": "Complete RecycledID NFT IPFS record including fixed attributes and recycling outcome data",
|
|
5
|
+
"$id": "https://raw.githubusercontent.com/carrot-foundation/schemas/refs/tags/0.1.36/schemas/ipfs/recycled-id/recycled-id.schema.json",
|
|
6
|
+
"version": "0.1.36",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"properties": {
|
|
9
|
+
"$schema": {
|
|
10
|
+
"title": "JSON Schema URI",
|
|
11
|
+
"description": "URI of the JSON Schema used to validate this record",
|
|
12
|
+
"example": "https://raw.githubusercontent.com/carrot-foundation/schemas/refs/heads/main/schemas/ipfs/shared/base/base.schema.json",
|
|
13
|
+
"type": "string",
|
|
14
|
+
"format": "uri"
|
|
9
15
|
},
|
|
10
|
-
{
|
|
16
|
+
"schema": {
|
|
11
17
|
"type": "object",
|
|
12
18
|
"properties": {
|
|
13
|
-
"
|
|
19
|
+
"hash": {
|
|
20
|
+
"title": "Schema Hash",
|
|
21
|
+
"description": "Keccak256 hash of the JSON Schema this record was validated against",
|
|
22
|
+
"examples": [
|
|
23
|
+
"ac08c3cf2e175e55961d6affdb38bc24591b84ceef7f3707c69ae3d52c148b2f",
|
|
24
|
+
"0xac08c3cf2e175e55961d6affdb38bc24591b84ceef7f3707c69ae3d52c148b2f"
|
|
25
|
+
],
|
|
26
|
+
"anyOf": [
|
|
27
|
+
{
|
|
28
|
+
"title": "Keccak256 Hash",
|
|
29
|
+
"description": "Keccak256 cryptographic hash as hexadecimal string",
|
|
30
|
+
"examples": [
|
|
31
|
+
"ac08c3cf2e175e55961d6affdb38bc24591b84ceef7f3707c69ae3d52c148b2f",
|
|
32
|
+
"b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2"
|
|
33
|
+
],
|
|
34
|
+
"type": "string",
|
|
35
|
+
"pattern": "^[0-9a-fA-F]{64}$"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"type": "string",
|
|
39
|
+
"pattern": "^0x[a-fA-F0-9]{64}$"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
"type": {
|
|
44
|
+
"title": "RecycledID Schema Type",
|
|
45
|
+
"description": "RecycledID NFT schema type",
|
|
46
|
+
"type": "string",
|
|
47
|
+
"const": "RecycledID"
|
|
48
|
+
},
|
|
49
|
+
"version": {
|
|
50
|
+
"title": "Schema Version",
|
|
51
|
+
"description": "Version of the schema, using semantic versioning",
|
|
52
|
+
"examples": [
|
|
53
|
+
"0.1.0",
|
|
54
|
+
"1.0.0",
|
|
55
|
+
"2.1.3"
|
|
56
|
+
],
|
|
57
|
+
"type": "string",
|
|
58
|
+
"minLength": 1,
|
|
59
|
+
"pattern": "^v?\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"required": [
|
|
63
|
+
"hash",
|
|
64
|
+
"type",
|
|
65
|
+
"version"
|
|
66
|
+
],
|
|
67
|
+
"additionalProperties": false
|
|
68
|
+
},
|
|
69
|
+
"created_at": {
|
|
70
|
+
"title": "Created At",
|
|
71
|
+
"description": "ISO 8601 creation timestamp for this record",
|
|
72
|
+
"examples": [
|
|
73
|
+
"2024-12-05T11:02:47.000Z",
|
|
74
|
+
"2025-02-22T10:35:12.000Z"
|
|
75
|
+
],
|
|
76
|
+
"type": "string",
|
|
77
|
+
"format": "date-time",
|
|
78
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
79
|
+
},
|
|
80
|
+
"external_id": {
|
|
81
|
+
"title": "External ID",
|
|
82
|
+
"description": "Off-chain reference ID (UUID from Carrot backend)",
|
|
83
|
+
"examples": [
|
|
84
|
+
"ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
85
|
+
"b2c4e6f8-a1b3-4c5d-9e8f-123456789abc"
|
|
86
|
+
],
|
|
87
|
+
"type": "string",
|
|
88
|
+
"format": "uuid",
|
|
89
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$"
|
|
90
|
+
},
|
|
91
|
+
"external_url": {
|
|
92
|
+
"title": "External URL",
|
|
93
|
+
"description": "External URL of the content",
|
|
94
|
+
"examples": [
|
|
95
|
+
"https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
96
|
+
"https://carrot.eco/whitepaper.pdf"
|
|
97
|
+
],
|
|
98
|
+
"type": "string",
|
|
99
|
+
"format": "uri"
|
|
100
|
+
},
|
|
101
|
+
"original_content_hash": {
|
|
102
|
+
"title": "Original Content Hash",
|
|
103
|
+
"description": "SHA-256 hash of the original JSON content including private data before schema validation",
|
|
104
|
+
"examples": [
|
|
105
|
+
"87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
|
|
106
|
+
"6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
|
|
107
|
+
],
|
|
108
|
+
"type": "string",
|
|
109
|
+
"pattern": "^[0-9a-fA-F]{64}$"
|
|
110
|
+
},
|
|
111
|
+
"content_hash": {
|
|
112
|
+
"title": "Content Hash",
|
|
113
|
+
"description": "SHA-256 hash of RFC 8785 canonicalized JSON after schema validation",
|
|
114
|
+
"examples": [
|
|
115
|
+
"87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
|
|
116
|
+
"6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
|
|
117
|
+
],
|
|
118
|
+
"type": "string",
|
|
119
|
+
"pattern": "^[0-9a-fA-F]{64}$"
|
|
120
|
+
},
|
|
121
|
+
"creator": {
|
|
122
|
+
"title": "Creator",
|
|
123
|
+
"description": "Entity that created this record",
|
|
124
|
+
"type": "object",
|
|
125
|
+
"properties": {
|
|
126
|
+
"name": {
|
|
127
|
+
"title": "Creator Name",
|
|
128
|
+
"description": "Company or individual name that created this record",
|
|
129
|
+
"examples": [
|
|
130
|
+
"Carrot Foundation"
|
|
131
|
+
],
|
|
132
|
+
"type": "string"
|
|
133
|
+
},
|
|
134
|
+
"id": {
|
|
135
|
+
"title": "Creator ID",
|
|
136
|
+
"description": "Unique identifier for the creator",
|
|
137
|
+
"examples": [
|
|
138
|
+
"ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
139
|
+
"6f520d88-864d-432d-bf9f-5c3166c4818f",
|
|
140
|
+
"f77afa89-1c58-40fd-9bf5-8a86703a8af4"
|
|
141
|
+
],
|
|
142
|
+
"type": "string",
|
|
143
|
+
"format": "uuid",
|
|
144
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$"
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
"required": [
|
|
148
|
+
"name",
|
|
149
|
+
"id"
|
|
150
|
+
],
|
|
151
|
+
"additionalProperties": false
|
|
152
|
+
},
|
|
153
|
+
"relationships": {
|
|
154
|
+
"title": "Relationships",
|
|
155
|
+
"description": "References to other IPFS records this record relates to",
|
|
156
|
+
"type": "array",
|
|
157
|
+
"items": {
|
|
158
|
+
"title": "Relationship",
|
|
159
|
+
"description": "Relationship to another IPFS record",
|
|
160
|
+
"type": "object",
|
|
161
|
+
"properties": {
|
|
162
|
+
"target_uri": {
|
|
163
|
+
"title": "Target IPFS URI",
|
|
164
|
+
"description": "Target IPFS URI of the referenced record",
|
|
165
|
+
"examples": [
|
|
166
|
+
"ipfs://QmTy8w65yBXgyfG2ZBg5TrfB2hPjrDQH3RCQFJGkARStJb/mass-id-organic.png",
|
|
167
|
+
"ipfs://QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o"
|
|
168
|
+
],
|
|
169
|
+
"type": "string",
|
|
170
|
+
"minLength": 1,
|
|
171
|
+
"pattern": "^ipfs:\\/\\/[a-zA-Z0-9]+(\\/.*)?$"
|
|
172
|
+
},
|
|
173
|
+
"type": {
|
|
174
|
+
"title": "Relationship Type",
|
|
175
|
+
"description": "Type of relationship to the referenced record",
|
|
176
|
+
"examples": [
|
|
177
|
+
"mass-id",
|
|
178
|
+
"audit",
|
|
179
|
+
"collection"
|
|
180
|
+
],
|
|
181
|
+
"type": "string",
|
|
182
|
+
"enum": [
|
|
183
|
+
"collection",
|
|
184
|
+
"credit",
|
|
185
|
+
"gas-id",
|
|
186
|
+
"mass-id",
|
|
187
|
+
"mass-id-audit",
|
|
188
|
+
"methodology",
|
|
189
|
+
"purchase-id",
|
|
190
|
+
"recycled-id"
|
|
191
|
+
]
|
|
192
|
+
},
|
|
193
|
+
"description": {
|
|
194
|
+
"title": "Relationship Description",
|
|
195
|
+
"description": "Human-readable description of the relationship",
|
|
196
|
+
"examples": [
|
|
197
|
+
"This record supersedes the previous version",
|
|
198
|
+
"Related carbon credit batch",
|
|
199
|
+
"Source document for this verification",
|
|
200
|
+
"Child record derived from this parent",
|
|
201
|
+
"Updated version of original record"
|
|
202
|
+
],
|
|
203
|
+
"type": "string"
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
"required": [
|
|
207
|
+
"target_uri",
|
|
208
|
+
"type"
|
|
209
|
+
],
|
|
210
|
+
"additionalProperties": false
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
"environment": {
|
|
214
|
+
"title": "Environment",
|
|
215
|
+
"description": "Environment information",
|
|
216
|
+
"type": "object",
|
|
217
|
+
"properties": {
|
|
218
|
+
"blockchain_network": {
|
|
219
|
+
"title": "Blockchain Network",
|
|
220
|
+
"description": "Blockchain Network Environment",
|
|
221
|
+
"type": "string",
|
|
222
|
+
"enum": [
|
|
223
|
+
"mainnet",
|
|
224
|
+
"testnet"
|
|
225
|
+
]
|
|
226
|
+
},
|
|
227
|
+
"deployment": {
|
|
228
|
+
"title": "Deployment Environment",
|
|
229
|
+
"description": "System environment where this record was generated",
|
|
230
|
+
"type": "string",
|
|
231
|
+
"enum": [
|
|
232
|
+
"production",
|
|
233
|
+
"development",
|
|
234
|
+
"testing"
|
|
235
|
+
]
|
|
236
|
+
},
|
|
237
|
+
"data_set_name": {
|
|
238
|
+
"title": "Data Set Name",
|
|
239
|
+
"description": "Name of the data set for this record",
|
|
240
|
+
"type": "string",
|
|
241
|
+
"enum": [
|
|
242
|
+
"TEST",
|
|
243
|
+
"PROD"
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
"required": [
|
|
248
|
+
"blockchain_network",
|
|
249
|
+
"deployment",
|
|
250
|
+
"data_set_name"
|
|
251
|
+
],
|
|
252
|
+
"additionalProperties": false
|
|
253
|
+
},
|
|
254
|
+
"data": {
|
|
255
|
+
"title": "RecycledID Data",
|
|
256
|
+
"description": "Complete data structure for RecycledID certificate",
|
|
257
|
+
"type": "object",
|
|
258
|
+
"properties": {
|
|
259
|
+
"summary": {
|
|
260
|
+
"title": "RecycledID Summary",
|
|
261
|
+
"description": "Summary information for the RecycledID certificate",
|
|
262
|
+
"type": "object",
|
|
263
|
+
"properties": {
|
|
264
|
+
"recycled_mass_kg": {
|
|
265
|
+
"title": "Recycled Mass Weight",
|
|
266
|
+
"description": "Total weight of materials successfully recycled",
|
|
267
|
+
"examples": [
|
|
268
|
+
3000,
|
|
269
|
+
1500,
|
|
270
|
+
500
|
|
271
|
+
],
|
|
272
|
+
"type": "number",
|
|
273
|
+
"minimum": 0
|
|
274
|
+
},
|
|
275
|
+
"credit_type": {
|
|
276
|
+
"title": "Credit Type",
|
|
277
|
+
"description": "Type of credit issued",
|
|
278
|
+
"examples": [
|
|
279
|
+
"Organic",
|
|
280
|
+
"Carbon (CH₄)"
|
|
281
|
+
],
|
|
282
|
+
"type": "string",
|
|
283
|
+
"minLength": 1,
|
|
284
|
+
"maxLength": 100
|
|
285
|
+
},
|
|
286
|
+
"credit_amount": {
|
|
287
|
+
"title": "Credit Amount",
|
|
288
|
+
"description": "Amount of credits issued",
|
|
289
|
+
"examples": [
|
|
290
|
+
0,
|
|
291
|
+
45.2,
|
|
292
|
+
72.5
|
|
293
|
+
],
|
|
294
|
+
"type": "number",
|
|
295
|
+
"minimum": 0
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
"required": [
|
|
299
|
+
"recycled_mass_kg",
|
|
300
|
+
"credit_type",
|
|
301
|
+
"credit_amount"
|
|
302
|
+
],
|
|
303
|
+
"additionalProperties": false
|
|
304
|
+
},
|
|
305
|
+
"methodology": {
|
|
306
|
+
"title": "Methodology Reference",
|
|
307
|
+
"description": "Reference to a methodology record",
|
|
308
|
+
"type": "object",
|
|
309
|
+
"properties": {
|
|
310
|
+
"external_id": {
|
|
311
|
+
"title": "Methodology External ID",
|
|
312
|
+
"description": "Unique identifier for the methodology",
|
|
313
|
+
"examples": [
|
|
314
|
+
"ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
315
|
+
"b2c4e6f8-a1b3-4c5d-9e8f-123456789abc"
|
|
316
|
+
],
|
|
317
|
+
"type": "string",
|
|
318
|
+
"format": "uuid",
|
|
319
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$"
|
|
320
|
+
},
|
|
321
|
+
"name": {
|
|
322
|
+
"title": "Methodology Name",
|
|
323
|
+
"description": "Human-readable name of the methodology",
|
|
324
|
+
"examples": [
|
|
325
|
+
"BOLD Carbon (CH₄)",
|
|
326
|
+
"BOLD Recycling"
|
|
327
|
+
],
|
|
328
|
+
"type": "string",
|
|
329
|
+
"minLength": 5,
|
|
330
|
+
"maxLength": 150
|
|
331
|
+
},
|
|
332
|
+
"version": {
|
|
333
|
+
"title": "Methodology Version",
|
|
334
|
+
"description": "Version of the methodology",
|
|
335
|
+
"examples": [
|
|
336
|
+
"0.1.0",
|
|
337
|
+
"1.0.0",
|
|
338
|
+
"2.1.3"
|
|
339
|
+
],
|
|
340
|
+
"type": "string",
|
|
341
|
+
"minLength": 1,
|
|
342
|
+
"pattern": "^v?\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$"
|
|
343
|
+
},
|
|
344
|
+
"external_url": {
|
|
345
|
+
"title": "Methodology External URL",
|
|
346
|
+
"description": "URL to view the methodology on Carrot Explorer",
|
|
347
|
+
"examples": [
|
|
348
|
+
"https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
349
|
+
"https://carrot.eco/whitepaper.pdf"
|
|
350
|
+
],
|
|
351
|
+
"type": "string",
|
|
352
|
+
"format": "uri"
|
|
353
|
+
},
|
|
354
|
+
"uri": {
|
|
355
|
+
"title": "Methodology IPFS URI",
|
|
356
|
+
"description": "IPFS URI to the methodology record",
|
|
357
|
+
"examples": [
|
|
358
|
+
"ipfs://QmTy8w65yBXgyfG2ZBg5TrfB2hPjrDQH3RCQFJGkARStJb/mass-id-organic.png",
|
|
359
|
+
"ipfs://QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o"
|
|
360
|
+
],
|
|
361
|
+
"type": "string",
|
|
362
|
+
"minLength": 1,
|
|
363
|
+
"pattern": "^ipfs:\\/\\/[a-zA-Z0-9]+(\\/.*)?$"
|
|
364
|
+
}
|
|
365
|
+
},
|
|
366
|
+
"required": [
|
|
367
|
+
"external_id",
|
|
368
|
+
"name",
|
|
369
|
+
"version",
|
|
370
|
+
"external_url"
|
|
371
|
+
],
|
|
372
|
+
"additionalProperties": false
|
|
373
|
+
},
|
|
374
|
+
"audit": {
|
|
375
|
+
"title": "Audit Reference",
|
|
376
|
+
"description": "Reference to an audit record",
|
|
377
|
+
"type": "object",
|
|
378
|
+
"properties": {
|
|
379
|
+
"date": {
|
|
380
|
+
"title": "Audit Date",
|
|
381
|
+
"description": "Date when the audit was completed",
|
|
382
|
+
"examples": [
|
|
383
|
+
"2024-12-05",
|
|
384
|
+
"2025-02-22",
|
|
385
|
+
"2024-02-10"
|
|
386
|
+
],
|
|
387
|
+
"type": "string",
|
|
388
|
+
"format": "date",
|
|
389
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
|
|
390
|
+
},
|
|
391
|
+
"external_id": {
|
|
392
|
+
"title": "Audit External ID",
|
|
393
|
+
"description": "Unique identifier for the audit",
|
|
394
|
+
"examples": [
|
|
395
|
+
"ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
396
|
+
"b2c4e6f8-a1b3-4c5d-9e8f-123456789abc"
|
|
397
|
+
],
|
|
398
|
+
"type": "string",
|
|
399
|
+
"format": "uuid",
|
|
400
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$"
|
|
401
|
+
},
|
|
402
|
+
"external_url": {
|
|
403
|
+
"title": "Audit External URL",
|
|
404
|
+
"description": "URL to view the audit on Carrot Explorer",
|
|
405
|
+
"examples": [
|
|
406
|
+
"https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
407
|
+
"https://carrot.eco/whitepaper.pdf"
|
|
408
|
+
],
|
|
409
|
+
"type": "string",
|
|
410
|
+
"format": "uri"
|
|
411
|
+
},
|
|
412
|
+
"methodology_compliance": {
|
|
413
|
+
"title": "Methodology Compliance",
|
|
414
|
+
"description": "Result of methodology compliance check",
|
|
415
|
+
"examples": [
|
|
416
|
+
"PASSED",
|
|
417
|
+
"FAILED"
|
|
418
|
+
],
|
|
419
|
+
"type": "string",
|
|
420
|
+
"enum": [
|
|
421
|
+
"PASSED",
|
|
422
|
+
"FAILED"
|
|
423
|
+
]
|
|
424
|
+
},
|
|
425
|
+
"rules_executed": {
|
|
426
|
+
"title": "Rules Executed",
|
|
427
|
+
"description": "Number of rules executed during the audit",
|
|
428
|
+
"examples": [
|
|
429
|
+
0,
|
|
430
|
+
123,
|
|
431
|
+
4126
|
|
432
|
+
],
|
|
433
|
+
"type": "integer",
|
|
434
|
+
"minimum": 0,
|
|
435
|
+
"maximum": 9007199254740991
|
|
436
|
+
},
|
|
437
|
+
"report": {
|
|
438
|
+
"title": "Audit Report",
|
|
439
|
+
"description": "IPFS URI of the audit report",
|
|
440
|
+
"examples": [
|
|
441
|
+
"ipfs://QmTy8w65yBXgyfG2ZBg5TrfB2hPjrDQH3RCQFJGkARStJb/mass-id-organic.png",
|
|
442
|
+
"ipfs://QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o"
|
|
443
|
+
],
|
|
444
|
+
"type": "string",
|
|
445
|
+
"minLength": 1,
|
|
446
|
+
"pattern": "^ipfs:\\/\\/[a-zA-Z0-9]+(\\/.*)?$"
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
"required": [
|
|
450
|
+
"date",
|
|
451
|
+
"external_id",
|
|
452
|
+
"external_url",
|
|
453
|
+
"methodology_compliance",
|
|
454
|
+
"rules_executed",
|
|
455
|
+
"report"
|
|
456
|
+
],
|
|
457
|
+
"additionalProperties": false
|
|
458
|
+
},
|
|
459
|
+
"mass_id": {
|
|
460
|
+
"title": "MassID Reference",
|
|
461
|
+
"description": "Reference to a MassID record",
|
|
462
|
+
"type": "object",
|
|
14
463
|
"properties": {
|
|
15
|
-
"
|
|
16
|
-
"
|
|
464
|
+
"external_id": {
|
|
465
|
+
"title": "MassID External ID",
|
|
466
|
+
"description": "Unique identifier for the MassID",
|
|
467
|
+
"examples": [
|
|
468
|
+
"ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
469
|
+
"b2c4e6f8-a1b3-4c5d-9e8f-123456789abc"
|
|
470
|
+
],
|
|
471
|
+
"type": "string",
|
|
472
|
+
"format": "uuid",
|
|
473
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$"
|
|
474
|
+
},
|
|
475
|
+
"token_id": {
|
|
476
|
+
"title": "MassID Token ID",
|
|
477
|
+
"description": "NFT token ID of the MassID",
|
|
478
|
+
"examples": [
|
|
479
|
+
"123",
|
|
480
|
+
"456789",
|
|
481
|
+
"1000000"
|
|
482
|
+
],
|
|
483
|
+
"type": "string",
|
|
484
|
+
"minLength": 1,
|
|
485
|
+
"pattern": "^\\d+$"
|
|
486
|
+
},
|
|
487
|
+
"external_url": {
|
|
488
|
+
"title": "MassID External URL",
|
|
489
|
+
"description": "URL to view the MassID on Carrot Explorer",
|
|
490
|
+
"examples": [
|
|
491
|
+
"https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
492
|
+
"https://carrot.eco/whitepaper.pdf"
|
|
493
|
+
],
|
|
494
|
+
"type": "string",
|
|
495
|
+
"format": "uri"
|
|
496
|
+
},
|
|
497
|
+
"uri": {
|
|
498
|
+
"title": "MassID IPFS URI",
|
|
499
|
+
"description": "IPFS URI of the MassID record",
|
|
500
|
+
"examples": [
|
|
501
|
+
"ipfs://QmTy8w65yBXgyfG2ZBg5TrfB2hPjrDQH3RCQFJGkARStJb/mass-id-organic.png",
|
|
502
|
+
"ipfs://QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o"
|
|
503
|
+
],
|
|
504
|
+
"type": "string",
|
|
505
|
+
"minLength": 1,
|
|
506
|
+
"pattern": "^ipfs:\\/\\/[a-zA-Z0-9]+(\\/.*)?$"
|
|
17
507
|
}
|
|
508
|
+
},
|
|
509
|
+
"required": [
|
|
510
|
+
"external_id",
|
|
511
|
+
"token_id",
|
|
512
|
+
"external_url",
|
|
513
|
+
"uri"
|
|
514
|
+
],
|
|
515
|
+
"additionalProperties": false
|
|
516
|
+
},
|
|
517
|
+
"waste_classification": {
|
|
518
|
+
"title": "Waste Classification",
|
|
519
|
+
"description": "Classification of the source waste (MassID)",
|
|
520
|
+
"type": "object",
|
|
521
|
+
"properties": {
|
|
522
|
+
"primary_type": {
|
|
523
|
+
"title": "Source Waste Primary Type",
|
|
524
|
+
"description": "Primary type of the source waste",
|
|
525
|
+
"examples": [
|
|
526
|
+
"Organic",
|
|
527
|
+
"Plastic",
|
|
528
|
+
"Metal"
|
|
529
|
+
],
|
|
530
|
+
"type": "string",
|
|
531
|
+
"minLength": 1,
|
|
532
|
+
"maxLength": 100
|
|
533
|
+
},
|
|
534
|
+
"subtype": {
|
|
535
|
+
"title": "Source Waste Subtype",
|
|
536
|
+
"description": "Subtype of the source waste",
|
|
537
|
+
"examples": [
|
|
538
|
+
"Food, Food Waste and Beverages",
|
|
539
|
+
"PET Bottles",
|
|
540
|
+
"Aluminum Cans"
|
|
541
|
+
],
|
|
542
|
+
"type": "string",
|
|
543
|
+
"minLength": 1,
|
|
544
|
+
"maxLength": 100
|
|
545
|
+
},
|
|
546
|
+
"net_weight_kg": {
|
|
547
|
+
"title": "Source Waste Net Weight",
|
|
548
|
+
"description": "Net weight of the source waste",
|
|
549
|
+
"examples": [
|
|
550
|
+
3000,
|
|
551
|
+
1500,
|
|
552
|
+
500
|
|
553
|
+
],
|
|
554
|
+
"type": "number",
|
|
555
|
+
"minimum": 0
|
|
556
|
+
}
|
|
557
|
+
},
|
|
558
|
+
"required": [
|
|
559
|
+
"primary_type",
|
|
560
|
+
"subtype",
|
|
561
|
+
"net_weight_kg"
|
|
562
|
+
],
|
|
563
|
+
"additionalProperties": false
|
|
564
|
+
},
|
|
565
|
+
"origin_location": {
|
|
566
|
+
"title": "RecycledID Origin Location",
|
|
567
|
+
"description": "Source waste origin location details",
|
|
568
|
+
"type": "object",
|
|
569
|
+
"properties": {
|
|
570
|
+
"id_hash": {
|
|
571
|
+
"title": "Location ID Hash",
|
|
572
|
+
"description": "Anonymized identifier for the location",
|
|
573
|
+
"examples": [
|
|
574
|
+
"87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
|
|
575
|
+
"6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
|
|
576
|
+
],
|
|
577
|
+
"type": "string",
|
|
578
|
+
"pattern": "^[0-9a-fA-F]{64}$"
|
|
579
|
+
},
|
|
580
|
+
"municipality": {
|
|
581
|
+
"title": "Municipality",
|
|
582
|
+
"description": "Municipality or city name",
|
|
583
|
+
"examples": [
|
|
584
|
+
"Macapá",
|
|
585
|
+
"São Paulo",
|
|
586
|
+
"New York",
|
|
587
|
+
"Berlin",
|
|
588
|
+
"Tokyo"
|
|
589
|
+
],
|
|
590
|
+
"type": "string",
|
|
591
|
+
"minLength": 1,
|
|
592
|
+
"maxLength": 50
|
|
593
|
+
},
|
|
594
|
+
"administrative_division": {
|
|
595
|
+
"title": "Administrative Division",
|
|
596
|
+
"description": "State, province, or administrative region name",
|
|
597
|
+
"examples": [
|
|
598
|
+
"Amapá",
|
|
599
|
+
"California",
|
|
600
|
+
"Bavaria"
|
|
601
|
+
],
|
|
602
|
+
"type": "string",
|
|
603
|
+
"minLength": 1,
|
|
604
|
+
"maxLength": 50
|
|
605
|
+
},
|
|
606
|
+
"administrative_division_code": {
|
|
607
|
+
"title": "ISO Administrative Division Code",
|
|
608
|
+
"description": "Administrative division code following ISO 3166-2 standard",
|
|
609
|
+
"examples": [
|
|
610
|
+
"BR-AP",
|
|
611
|
+
"BR-ES",
|
|
612
|
+
"US-CA"
|
|
613
|
+
],
|
|
614
|
+
"type": "string",
|
|
615
|
+
"pattern": "^[A-Z]{2}-[A-Z0-9]{1,3}$"
|
|
616
|
+
},
|
|
617
|
+
"country": {
|
|
618
|
+
"title": "Country",
|
|
619
|
+
"description": "Full country name in English",
|
|
620
|
+
"examples": [
|
|
621
|
+
"Brazil",
|
|
622
|
+
"United States",
|
|
623
|
+
"Germany",
|
|
624
|
+
"Japan"
|
|
625
|
+
],
|
|
626
|
+
"type": "string",
|
|
627
|
+
"minLength": 1,
|
|
628
|
+
"maxLength": 50
|
|
629
|
+
},
|
|
630
|
+
"country_code": {
|
|
631
|
+
"title": "ISO Country Code",
|
|
632
|
+
"description": "Two-letter country code following ISO 3166-1 alpha-2 standard",
|
|
633
|
+
"examples": [
|
|
634
|
+
"BR",
|
|
635
|
+
"US",
|
|
636
|
+
"DE"
|
|
637
|
+
],
|
|
638
|
+
"type": "string",
|
|
639
|
+
"pattern": "^[A-Z]{2}$"
|
|
640
|
+
},
|
|
641
|
+
"responsible_participant_id_hash": {
|
|
642
|
+
"title": "Responsible Participant ID Hash",
|
|
643
|
+
"description": "Anonymized ID of the participant responsible for this location",
|
|
644
|
+
"examples": [
|
|
645
|
+
"87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
|
|
646
|
+
"6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
|
|
647
|
+
],
|
|
648
|
+
"type": "string",
|
|
649
|
+
"pattern": "^[0-9a-fA-F]{64}$"
|
|
650
|
+
},
|
|
651
|
+
"coordinates": {
|
|
652
|
+
"title": "Coordinates",
|
|
653
|
+
"description": "GPS coordinates of the location",
|
|
654
|
+
"type": "object",
|
|
655
|
+
"properties": {
|
|
656
|
+
"latitude": {
|
|
657
|
+
"title": "Latitude",
|
|
658
|
+
"description": "Geographic latitude coordinate in decimal degrees with maximum 3 decimal places precision (~100m-1km accuracy for city-level, non-PII compliance)",
|
|
659
|
+
"examples": [
|
|
660
|
+
-0.02,
|
|
661
|
+
-20.38,
|
|
662
|
+
40.713
|
|
663
|
+
],
|
|
664
|
+
"type": "number",
|
|
665
|
+
"minimum": -90,
|
|
666
|
+
"maximum": 90,
|
|
667
|
+
"multipleOf": 0.001
|
|
668
|
+
},
|
|
669
|
+
"longitude": {
|
|
670
|
+
"title": "Longitude",
|
|
671
|
+
"description": "Geographic longitude coordinate in decimal degrees with maximum 3 decimal places precision (~100m-1km accuracy for city-level, non-PII compliance)",
|
|
672
|
+
"examples": [
|
|
673
|
+
-51.06,
|
|
674
|
+
-40.34,
|
|
675
|
+
-74.006
|
|
676
|
+
],
|
|
677
|
+
"type": "number",
|
|
678
|
+
"minimum": -180,
|
|
679
|
+
"maximum": 180,
|
|
680
|
+
"multipleOf": 0.001
|
|
681
|
+
},
|
|
682
|
+
"precision_level": {
|
|
683
|
+
"title": "Coordinate Precision Level",
|
|
684
|
+
"description": "Level of coordinate precision",
|
|
685
|
+
"examples": [
|
|
686
|
+
"city",
|
|
687
|
+
"exact",
|
|
688
|
+
"neighborhood"
|
|
689
|
+
],
|
|
690
|
+
"type": "string",
|
|
691
|
+
"enum": [
|
|
692
|
+
"exact",
|
|
693
|
+
"neighborhood",
|
|
694
|
+
"city",
|
|
695
|
+
"region",
|
|
696
|
+
"country"
|
|
697
|
+
]
|
|
698
|
+
}
|
|
699
|
+
},
|
|
700
|
+
"required": [
|
|
701
|
+
"latitude",
|
|
702
|
+
"longitude",
|
|
703
|
+
"precision_level"
|
|
704
|
+
],
|
|
705
|
+
"additionalProperties": false
|
|
706
|
+
},
|
|
707
|
+
"facility_type": {
|
|
708
|
+
"title": "Facility Type",
|
|
709
|
+
"description": "Type of facility in the waste management chain",
|
|
710
|
+
"examples": [
|
|
711
|
+
"Collection Point",
|
|
712
|
+
"Recycling Facility",
|
|
713
|
+
"Administrative Office"
|
|
714
|
+
],
|
|
715
|
+
"type": "string",
|
|
716
|
+
"enum": [
|
|
717
|
+
"Collection Point",
|
|
718
|
+
"Recycling Facility",
|
|
719
|
+
"Administrative Office",
|
|
720
|
+
"Other"
|
|
721
|
+
]
|
|
722
|
+
}
|
|
723
|
+
},
|
|
724
|
+
"required": [
|
|
725
|
+
"id_hash",
|
|
726
|
+
"municipality",
|
|
727
|
+
"administrative_division",
|
|
728
|
+
"country",
|
|
729
|
+
"country_code",
|
|
730
|
+
"responsible_participant_id_hash",
|
|
731
|
+
"coordinates"
|
|
732
|
+
],
|
|
733
|
+
"additionalProperties": false
|
|
734
|
+
},
|
|
735
|
+
"accredited_participants": {
|
|
736
|
+
"title": "Accredited Participants",
|
|
737
|
+
"description": "List of participants with valid accreditations",
|
|
738
|
+
"minItems": 1,
|
|
739
|
+
"type": "array",
|
|
740
|
+
"items": {
|
|
741
|
+
"title": "Accredited Participant",
|
|
742
|
+
"description": "Participant with valid accreditation in the supply chain",
|
|
743
|
+
"type": "object",
|
|
744
|
+
"properties": {
|
|
745
|
+
"participant_id": {
|
|
746
|
+
"title": "Participant ID",
|
|
747
|
+
"description": "Unique identifier for the participant",
|
|
748
|
+
"examples": [
|
|
749
|
+
"ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
750
|
+
"6f520d88-864d-432d-bf9f-5c3166c4818f",
|
|
751
|
+
"f77afa89-1c58-40fd-9bf5-8a86703a8af4"
|
|
752
|
+
],
|
|
753
|
+
"type": "string",
|
|
754
|
+
"format": "uuid",
|
|
755
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$"
|
|
756
|
+
},
|
|
757
|
+
"name": {
|
|
758
|
+
"title": "Participant Name",
|
|
759
|
+
"description": "Name of the participant",
|
|
760
|
+
"examples": [
|
|
761
|
+
"Enlatados Produção",
|
|
762
|
+
"Eco Reciclagem",
|
|
763
|
+
"Green Tech Corp"
|
|
764
|
+
],
|
|
765
|
+
"type": "string",
|
|
766
|
+
"minLength": 1,
|
|
767
|
+
"maxLength": 100
|
|
768
|
+
},
|
|
769
|
+
"role": {
|
|
770
|
+
"title": "Participant Role",
|
|
771
|
+
"description": "Role of the participant in the supply chain",
|
|
772
|
+
"examples": [
|
|
773
|
+
"Waste Generator",
|
|
774
|
+
"Hauler",
|
|
775
|
+
"Recycler"
|
|
776
|
+
],
|
|
777
|
+
"type": "string",
|
|
778
|
+
"minLength": 1,
|
|
779
|
+
"maxLength": 100
|
|
780
|
+
},
|
|
781
|
+
"accreditation_id": {
|
|
782
|
+
"title": "Accreditation ID",
|
|
783
|
+
"description": "Unique identifier for the participant accreditation",
|
|
784
|
+
"examples": [
|
|
785
|
+
"ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
786
|
+
"6f520d88-864d-432d-bf9f-5c3166c4818f",
|
|
787
|
+
"f77afa89-1c58-40fd-9bf5-8a86703a8af4"
|
|
788
|
+
],
|
|
789
|
+
"type": "string",
|
|
790
|
+
"format": "uuid",
|
|
791
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$"
|
|
792
|
+
},
|
|
793
|
+
"external_url": {
|
|
794
|
+
"title": "Participant Accreditation External URL",
|
|
795
|
+
"description": "URL to view the participant accreditation on Carrot Explorer",
|
|
796
|
+
"examples": [
|
|
797
|
+
"https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
798
|
+
"https://carrot.eco/whitepaper.pdf"
|
|
799
|
+
],
|
|
800
|
+
"type": "string",
|
|
801
|
+
"format": "uri"
|
|
802
|
+
}
|
|
803
|
+
},
|
|
804
|
+
"required": [
|
|
805
|
+
"participant_id",
|
|
806
|
+
"name",
|
|
807
|
+
"role",
|
|
808
|
+
"accreditation_id",
|
|
809
|
+
"external_url"
|
|
810
|
+
],
|
|
811
|
+
"additionalProperties": false
|
|
18
812
|
}
|
|
19
813
|
},
|
|
20
|
-
"
|
|
21
|
-
"
|
|
814
|
+
"participant_rewards": {
|
|
815
|
+
"title": "Participant Rewards",
|
|
816
|
+
"description": "Rewards distribution to participants",
|
|
817
|
+
"type": "object",
|
|
818
|
+
"properties": {
|
|
819
|
+
"distribution_basis": {
|
|
820
|
+
"title": "Distribution Basis",
|
|
821
|
+
"description": "Basis for the rewards distribution",
|
|
822
|
+
"type": "string",
|
|
823
|
+
"minLength": 1,
|
|
824
|
+
"maxLength": 200
|
|
825
|
+
},
|
|
826
|
+
"reward_allocations": {
|
|
827
|
+
"title": "Reward Allocations",
|
|
828
|
+
"description": "Rewards percentage allocated to each participant",
|
|
829
|
+
"minItems": 1,
|
|
830
|
+
"type": "array",
|
|
831
|
+
"items": {
|
|
832
|
+
"title": "Reward Allocation",
|
|
833
|
+
"description": "Reward allocation for a specific participant",
|
|
834
|
+
"type": "object",
|
|
835
|
+
"properties": {
|
|
836
|
+
"participant_id": {
|
|
837
|
+
"title": "Participant ID",
|
|
838
|
+
"description": "Unique identifier for the participant receiving the reward",
|
|
839
|
+
"examples": [
|
|
840
|
+
"ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
841
|
+
"6f520d88-864d-432d-bf9f-5c3166c4818f",
|
|
842
|
+
"f77afa89-1c58-40fd-9bf5-8a86703a8af4"
|
|
843
|
+
],
|
|
844
|
+
"type": "string",
|
|
845
|
+
"format": "uuid",
|
|
846
|
+
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$"
|
|
847
|
+
},
|
|
848
|
+
"participant_name": {
|
|
849
|
+
"title": "Participant Name",
|
|
850
|
+
"description": "Name of the participant receiving the reward",
|
|
851
|
+
"examples": [
|
|
852
|
+
"Enlatados Produção",
|
|
853
|
+
"Eco Reciclagem",
|
|
854
|
+
"Green Tech Corp"
|
|
855
|
+
],
|
|
856
|
+
"type": "string",
|
|
857
|
+
"minLength": 1,
|
|
858
|
+
"maxLength": 100
|
|
859
|
+
},
|
|
860
|
+
"role": {
|
|
861
|
+
"title": "Participant Role",
|
|
862
|
+
"description": "Role of the participant in the supply chain",
|
|
863
|
+
"examples": [
|
|
864
|
+
"Waste Generator",
|
|
865
|
+
"Hauler",
|
|
866
|
+
"Recycler"
|
|
867
|
+
],
|
|
868
|
+
"type": "string",
|
|
869
|
+
"minLength": 1,
|
|
870
|
+
"maxLength": 100
|
|
871
|
+
},
|
|
872
|
+
"reward_percentage": {
|
|
873
|
+
"title": "Reward Percentage",
|
|
874
|
+
"description": "Reward percentage allocated to the participant",
|
|
875
|
+
"examples": [
|
|
876
|
+
50,
|
|
877
|
+
75.5,
|
|
878
|
+
100
|
|
879
|
+
],
|
|
880
|
+
"type": "number",
|
|
881
|
+
"minimum": 0,
|
|
882
|
+
"maximum": 100
|
|
883
|
+
},
|
|
884
|
+
"large_business_discount_applied": {
|
|
885
|
+
"title": "Large Business Discount Applied",
|
|
886
|
+
"description": "Whether the large business discount was applied",
|
|
887
|
+
"type": "boolean"
|
|
888
|
+
},
|
|
889
|
+
"effective_percentage": {
|
|
890
|
+
"title": "Effective Percentage",
|
|
891
|
+
"description": "Effective percentage of the reward after discounts",
|
|
892
|
+
"examples": [
|
|
893
|
+
50,
|
|
894
|
+
75.5,
|
|
895
|
+
100
|
|
896
|
+
],
|
|
897
|
+
"type": "number",
|
|
898
|
+
"minimum": 0,
|
|
899
|
+
"maximum": 100
|
|
900
|
+
}
|
|
901
|
+
},
|
|
902
|
+
"required": [
|
|
903
|
+
"participant_id",
|
|
904
|
+
"participant_name",
|
|
905
|
+
"role",
|
|
906
|
+
"reward_percentage",
|
|
907
|
+
"effective_percentage"
|
|
908
|
+
],
|
|
909
|
+
"additionalProperties": false
|
|
910
|
+
}
|
|
911
|
+
},
|
|
912
|
+
"distribution_notes": {
|
|
913
|
+
"title": "Distribution Notes",
|
|
914
|
+
"description": "Additional notes about the reward distribution",
|
|
915
|
+
"type": "object",
|
|
916
|
+
"properties": {
|
|
917
|
+
"large_business_discount_applied": {
|
|
918
|
+
"title": "Large Business Discount Applied",
|
|
919
|
+
"description": "Description of the large business discount applied",
|
|
920
|
+
"examples": [
|
|
921
|
+
"50% reduction applied to participants with >$4M annual revenue"
|
|
922
|
+
],
|
|
923
|
+
"type": "string",
|
|
924
|
+
"minLength": 1
|
|
925
|
+
},
|
|
926
|
+
"redirected_rewards": {
|
|
927
|
+
"title": "Redirected Rewards",
|
|
928
|
+
"description": "Description of the redirected rewards",
|
|
929
|
+
"examples": [
|
|
930
|
+
"Discounted rewards from large businesses redirected to accredited NGOs"
|
|
931
|
+
],
|
|
932
|
+
"type": "string",
|
|
933
|
+
"minLength": 1
|
|
934
|
+
}
|
|
935
|
+
},
|
|
936
|
+
"additionalProperties": false
|
|
937
|
+
}
|
|
938
|
+
},
|
|
939
|
+
"required": [
|
|
940
|
+
"distribution_basis",
|
|
941
|
+
"reward_allocations"
|
|
942
|
+
],
|
|
943
|
+
"additionalProperties": false
|
|
944
|
+
}
|
|
945
|
+
},
|
|
946
|
+
"required": [
|
|
947
|
+
"summary",
|
|
948
|
+
"methodology",
|
|
949
|
+
"audit",
|
|
950
|
+
"mass_id",
|
|
951
|
+
"waste_classification",
|
|
952
|
+
"origin_location",
|
|
953
|
+
"accredited_participants"
|
|
954
|
+
],
|
|
955
|
+
"additionalProperties": false
|
|
956
|
+
},
|
|
957
|
+
"blockchain": {
|
|
958
|
+
"title": "Blockchain Information",
|
|
959
|
+
"description": "Blockchain-specific information for the NFT",
|
|
960
|
+
"type": "object",
|
|
961
|
+
"properties": {
|
|
962
|
+
"smart_contract_address": {
|
|
963
|
+
"title": "Smart Contract Address",
|
|
964
|
+
"description": "A valid Ethereum address in hexadecimal format",
|
|
965
|
+
"examples": [
|
|
966
|
+
"0x1234567890abcdef1234567890abcdef12345678",
|
|
967
|
+
"0xabcdef1234567890abcdef1234567890abcdef12"
|
|
968
|
+
],
|
|
969
|
+
"type": "string",
|
|
970
|
+
"pattern": "^0x[a-fA-F0-9]{40}$"
|
|
971
|
+
},
|
|
972
|
+
"chain_id": {
|
|
973
|
+
"title": "Chain ID",
|
|
974
|
+
"description": "Blockchain chain ID",
|
|
975
|
+
"examples": [
|
|
976
|
+
1,
|
|
977
|
+
137,
|
|
978
|
+
11155111
|
|
979
|
+
],
|
|
980
|
+
"type": "integer",
|
|
981
|
+
"minimum": 1,
|
|
982
|
+
"maximum": 9007199254740991
|
|
983
|
+
},
|
|
984
|
+
"network_name": {
|
|
985
|
+
"title": "Network Name",
|
|
986
|
+
"description": "Name of the blockchain network",
|
|
987
|
+
"type": "string",
|
|
988
|
+
"minLength": 5,
|
|
989
|
+
"maxLength": 100
|
|
22
990
|
},
|
|
23
|
-
"
|
|
24
|
-
"
|
|
991
|
+
"token_id": {
|
|
992
|
+
"title": "Token ID",
|
|
993
|
+
"description": "NFT token ID",
|
|
994
|
+
"examples": [
|
|
995
|
+
"123",
|
|
996
|
+
"456789",
|
|
997
|
+
"1000000"
|
|
998
|
+
],
|
|
999
|
+
"type": "string",
|
|
1000
|
+
"minLength": 1,
|
|
1001
|
+
"pattern": "^\\d+$"
|
|
25
1002
|
}
|
|
1003
|
+
},
|
|
1004
|
+
"required": [
|
|
1005
|
+
"smart_contract_address",
|
|
1006
|
+
"chain_id",
|
|
1007
|
+
"network_name",
|
|
1008
|
+
"token_id"
|
|
1009
|
+
],
|
|
1010
|
+
"additionalProperties": false
|
|
1011
|
+
},
|
|
1012
|
+
"name": {
|
|
1013
|
+
"title": "NFT Name",
|
|
1014
|
+
"description": "Full display name for this NFT, including extra context",
|
|
1015
|
+
"examples": [
|
|
1016
|
+
"MassID #123 • Organic • 3.0t",
|
|
1017
|
+
"RecycledID #456 • Plastic • 2.5t",
|
|
1018
|
+
"GasID #789 • Methane • 1000 m³"
|
|
1019
|
+
],
|
|
1020
|
+
"type": "string",
|
|
1021
|
+
"minLength": 1,
|
|
1022
|
+
"maxLength": 100
|
|
1023
|
+
},
|
|
1024
|
+
"short_name": {
|
|
1025
|
+
"title": "Short Name",
|
|
1026
|
+
"description": "Compact name for UI summaries, tables, or tooltips",
|
|
1027
|
+
"examples": [
|
|
1028
|
+
"MassID #123",
|
|
1029
|
+
"RecycledID #456",
|
|
1030
|
+
"GasID #789"
|
|
1031
|
+
],
|
|
1032
|
+
"type": "string",
|
|
1033
|
+
"minLength": 1,
|
|
1034
|
+
"maxLength": 50
|
|
1035
|
+
},
|
|
1036
|
+
"description": {
|
|
1037
|
+
"title": "Description",
|
|
1038
|
+
"description": "Human-readable summary of the NFT's role and context. Ideally, maximum 300 characters.",
|
|
1039
|
+
"examples": [
|
|
1040
|
+
"This MassID represents 3 metric tons of organic food waste from Enlatados Produção, tracked through complete chain of custody from generation to composting.",
|
|
1041
|
+
"This RecycledID represents 2.5 metric tons of recycled plastic bottles processed by Green Solutions Ltd."
|
|
1042
|
+
],
|
|
1043
|
+
"type": "string",
|
|
1044
|
+
"minLength": 10,
|
|
1045
|
+
"maxLength": 500
|
|
1046
|
+
},
|
|
1047
|
+
"image": {
|
|
1048
|
+
"title": "Image URI",
|
|
1049
|
+
"description": "IPFS URI pointing to the preview image",
|
|
1050
|
+
"examples": [
|
|
1051
|
+
"ipfs://QmTy8w65yBXgyfG2ZBg5TrfB2hPjrDQH3RCQFJGkARStJb/mass-id-organic.png",
|
|
1052
|
+
"ipfs://QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o"
|
|
1053
|
+
],
|
|
1054
|
+
"type": "string",
|
|
1055
|
+
"minLength": 1,
|
|
1056
|
+
"pattern": "^ipfs:\\/\\/[a-zA-Z0-9]+(\\/.*)?$"
|
|
1057
|
+
},
|
|
1058
|
+
"background_color": {
|
|
1059
|
+
"title": "Background Color",
|
|
1060
|
+
"description": "Hex color code for marketplace background display",
|
|
1061
|
+
"examples": [
|
|
1062
|
+
"#2D5A27",
|
|
1063
|
+
"#FF5733",
|
|
1064
|
+
"#1E90FF"
|
|
1065
|
+
],
|
|
1066
|
+
"type": "string",
|
|
1067
|
+
"minLength": 1,
|
|
1068
|
+
"pattern": "^#[0-9A-F]{6}$"
|
|
1069
|
+
},
|
|
1070
|
+
"animation_url": {
|
|
1071
|
+
"title": "Animation URL",
|
|
1072
|
+
"description": "IPFS URI pointing to an animated or interactive media file",
|
|
1073
|
+
"examples": [
|
|
1074
|
+
"ipfs://QmAnimation123/mass-id-animation.mp4",
|
|
1075
|
+
"ipfs://QmInteractive456/recycled-visualization.webm"
|
|
1076
|
+
],
|
|
1077
|
+
"type": "string",
|
|
1078
|
+
"minLength": 1,
|
|
1079
|
+
"pattern": "^ipfs:\\/\\/[a-zA-Z0-9]+(\\/.*)?$"
|
|
1080
|
+
},
|
|
1081
|
+
"external_links": {
|
|
1082
|
+
"title": "External Links",
|
|
1083
|
+
"description": "Optional list of public resource links with labels",
|
|
1084
|
+
"examples": [
|
|
1085
|
+
[
|
|
1086
|
+
{
|
|
1087
|
+
"label": "Carrot Explorer",
|
|
1088
|
+
"url": "https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
|
|
1089
|
+
"description": "Complete chain of custody and audit trail"
|
|
1090
|
+
},
|
|
1091
|
+
{
|
|
1092
|
+
"label": "Carrot White Paper",
|
|
1093
|
+
"url": "https://carrot.eco/whitepaper.pdf",
|
|
1094
|
+
"description": "Carrot Foundation technical and impact white paper"
|
|
1095
|
+
}
|
|
1096
|
+
]
|
|
1097
|
+
],
|
|
1098
|
+
"maxItems": 10,
|
|
1099
|
+
"type": "array",
|
|
1100
|
+
"items": {
|
|
1101
|
+
"title": "External Link",
|
|
1102
|
+
"description": "External link with label and description",
|
|
1103
|
+
"type": "object",
|
|
1104
|
+
"properties": {
|
|
1105
|
+
"label": {
|
|
1106
|
+
"title": "Link Label",
|
|
1107
|
+
"description": "Display name for the external link",
|
|
1108
|
+
"type": "string",
|
|
1109
|
+
"minLength": 1,
|
|
1110
|
+
"maxLength": 50
|
|
1111
|
+
},
|
|
1112
|
+
"url": {
|
|
1113
|
+
"title": "Link URL",
|
|
1114
|
+
"description": "Direct URI to the linked resource",
|
|
1115
|
+
"type": "string",
|
|
1116
|
+
"format": "uri"
|
|
1117
|
+
},
|
|
1118
|
+
"description": {
|
|
1119
|
+
"title": "Link Description",
|
|
1120
|
+
"description": "Optional context about what the link provides",
|
|
1121
|
+
"type": "string",
|
|
1122
|
+
"minLength": 10,
|
|
1123
|
+
"maxLength": 100
|
|
1124
|
+
}
|
|
1125
|
+
},
|
|
1126
|
+
"required": [
|
|
1127
|
+
"label",
|
|
1128
|
+
"url"
|
|
1129
|
+
],
|
|
1130
|
+
"additionalProperties": false
|
|
26
1131
|
}
|
|
1132
|
+
},
|
|
1133
|
+
"attributes": {
|
|
1134
|
+
"title": "RecycledID NFT Attribute Array",
|
|
1135
|
+
"description": "Schema for the fixed set of RecycledID NFT attributes, enforcing order and type for each trait",
|
|
1136
|
+
"type": "array",
|
|
1137
|
+
"prefixItems": [
|
|
1138
|
+
{
|
|
1139
|
+
"title": "Methodology Attribute",
|
|
1140
|
+
"description": "Methodology used for certification",
|
|
1141
|
+
"type": "object",
|
|
1142
|
+
"properties": {
|
|
1143
|
+
"trait_type": {
|
|
1144
|
+
"type": "string",
|
|
1145
|
+
"const": "Methodology"
|
|
1146
|
+
},
|
|
1147
|
+
"value": {
|
|
1148
|
+
"title": "Methodology Name",
|
|
1149
|
+
"description": "Name of the methodology used for certification",
|
|
1150
|
+
"examples": [
|
|
1151
|
+
"BOLD Recycling",
|
|
1152
|
+
"BOLD Carbon (CH₄)"
|
|
1153
|
+
],
|
|
1154
|
+
"type": "string",
|
|
1155
|
+
"minLength": 1,
|
|
1156
|
+
"maxLength": 100
|
|
1157
|
+
},
|
|
1158
|
+
"display_type": {
|
|
1159
|
+
"title": "Display Type",
|
|
1160
|
+
"description": "How the trait should be displayed in marketplace UIs",
|
|
1161
|
+
"type": "string",
|
|
1162
|
+
"enum": [
|
|
1163
|
+
"number",
|
|
1164
|
+
"date",
|
|
1165
|
+
"boost_number",
|
|
1166
|
+
"boost_percentage"
|
|
1167
|
+
]
|
|
1168
|
+
},
|
|
1169
|
+
"max_value": {
|
|
1170
|
+
"title": "Max Value",
|
|
1171
|
+
"description": "Maximum possible value for numeric traits",
|
|
1172
|
+
"examples": [
|
|
1173
|
+
0,
|
|
1174
|
+
45.2,
|
|
1175
|
+
72.5
|
|
1176
|
+
],
|
|
1177
|
+
"type": "number",
|
|
1178
|
+
"minimum": 0
|
|
1179
|
+
}
|
|
1180
|
+
},
|
|
1181
|
+
"required": [
|
|
1182
|
+
"trait_type",
|
|
1183
|
+
"value"
|
|
1184
|
+
],
|
|
1185
|
+
"additionalProperties": false
|
|
1186
|
+
},
|
|
1187
|
+
{
|
|
1188
|
+
"title": "Recycled Mass Weight Attribute",
|
|
1189
|
+
"description": "Recycled mass weight attribute with numeric display",
|
|
1190
|
+
"type": "object",
|
|
1191
|
+
"properties": {
|
|
1192
|
+
"trait_type": {
|
|
1193
|
+
"type": "string",
|
|
1194
|
+
"const": "Recycled Mass Weight (kg)"
|
|
1195
|
+
},
|
|
1196
|
+
"value": {
|
|
1197
|
+
"title": "Recycled Mass Weight",
|
|
1198
|
+
"description": "Total weight of recycled materials in kilograms",
|
|
1199
|
+
"examples": [
|
|
1200
|
+
3000,
|
|
1201
|
+
1500,
|
|
1202
|
+
500
|
|
1203
|
+
],
|
|
1204
|
+
"type": "number",
|
|
1205
|
+
"minimum": 0
|
|
1206
|
+
},
|
|
1207
|
+
"display_type": {
|
|
1208
|
+
"type": "string",
|
|
1209
|
+
"const": "number"
|
|
1210
|
+
},
|
|
1211
|
+
"max_value": {
|
|
1212
|
+
"title": "Max Value",
|
|
1213
|
+
"description": "Maximum possible value for numeric traits",
|
|
1214
|
+
"examples": [
|
|
1215
|
+
0,
|
|
1216
|
+
45.2,
|
|
1217
|
+
72.5
|
|
1218
|
+
],
|
|
1219
|
+
"type": "number",
|
|
1220
|
+
"minimum": 0
|
|
1221
|
+
}
|
|
1222
|
+
},
|
|
1223
|
+
"required": [
|
|
1224
|
+
"trait_type",
|
|
1225
|
+
"value",
|
|
1226
|
+
"display_type"
|
|
1227
|
+
],
|
|
1228
|
+
"additionalProperties": false
|
|
1229
|
+
},
|
|
1230
|
+
{
|
|
1231
|
+
"title": "Credit Amount Attribute",
|
|
1232
|
+
"description": "Credit amount attribute with numeric display",
|
|
1233
|
+
"type": "object",
|
|
1234
|
+
"properties": {
|
|
1235
|
+
"trait_type": {
|
|
1236
|
+
"type": "string",
|
|
1237
|
+
"const": "Credit Amount"
|
|
1238
|
+
},
|
|
1239
|
+
"value": {
|
|
1240
|
+
"title": "Credit Amount",
|
|
1241
|
+
"description": "Amount of credits issued",
|
|
1242
|
+
"examples": [
|
|
1243
|
+
0,
|
|
1244
|
+
45.2,
|
|
1245
|
+
72.5
|
|
1246
|
+
],
|
|
1247
|
+
"type": "number",
|
|
1248
|
+
"minimum": 0
|
|
1249
|
+
},
|
|
1250
|
+
"display_type": {
|
|
1251
|
+
"type": "string",
|
|
1252
|
+
"const": "number"
|
|
1253
|
+
},
|
|
1254
|
+
"max_value": {
|
|
1255
|
+
"title": "Max Value",
|
|
1256
|
+
"description": "Maximum possible value for numeric traits",
|
|
1257
|
+
"examples": [
|
|
1258
|
+
0,
|
|
1259
|
+
45.2,
|
|
1260
|
+
72.5
|
|
1261
|
+
],
|
|
1262
|
+
"type": "number",
|
|
1263
|
+
"minimum": 0
|
|
1264
|
+
}
|
|
1265
|
+
},
|
|
1266
|
+
"required": [
|
|
1267
|
+
"trait_type",
|
|
1268
|
+
"value",
|
|
1269
|
+
"display_type"
|
|
1270
|
+
],
|
|
1271
|
+
"additionalProperties": false
|
|
1272
|
+
},
|
|
1273
|
+
{
|
|
1274
|
+
"title": "Credit Type Attribute",
|
|
1275
|
+
"description": "Credit type attribute",
|
|
1276
|
+
"type": "object",
|
|
1277
|
+
"properties": {
|
|
1278
|
+
"trait_type": {
|
|
1279
|
+
"type": "string",
|
|
1280
|
+
"const": "Credit Type"
|
|
1281
|
+
},
|
|
1282
|
+
"value": {
|
|
1283
|
+
"title": "Credit Type",
|
|
1284
|
+
"description": "Type of credit issued",
|
|
1285
|
+
"examples": [
|
|
1286
|
+
"Organic",
|
|
1287
|
+
"Carbon (CH₄)"
|
|
1288
|
+
],
|
|
1289
|
+
"type": "string",
|
|
1290
|
+
"minLength": 1,
|
|
1291
|
+
"maxLength": 100
|
|
1292
|
+
},
|
|
1293
|
+
"display_type": {
|
|
1294
|
+
"title": "Display Type",
|
|
1295
|
+
"description": "How the trait should be displayed in marketplace UIs",
|
|
1296
|
+
"type": "string",
|
|
1297
|
+
"enum": [
|
|
1298
|
+
"number",
|
|
1299
|
+
"date",
|
|
1300
|
+
"boost_number",
|
|
1301
|
+
"boost_percentage"
|
|
1302
|
+
]
|
|
1303
|
+
},
|
|
1304
|
+
"max_value": {
|
|
1305
|
+
"title": "Max Value",
|
|
1306
|
+
"description": "Maximum possible value for numeric traits",
|
|
1307
|
+
"examples": [
|
|
1308
|
+
0,
|
|
1309
|
+
45.2,
|
|
1310
|
+
72.5
|
|
1311
|
+
],
|
|
1312
|
+
"type": "number",
|
|
1313
|
+
"minimum": 0
|
|
1314
|
+
}
|
|
1315
|
+
},
|
|
1316
|
+
"required": [
|
|
1317
|
+
"trait_type",
|
|
1318
|
+
"value"
|
|
1319
|
+
],
|
|
1320
|
+
"additionalProperties": false
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
"title": "Source Waste Type Attribute",
|
|
1324
|
+
"description": "Source waste type attribute",
|
|
1325
|
+
"type": "object",
|
|
1326
|
+
"properties": {
|
|
1327
|
+
"trait_type": {
|
|
1328
|
+
"type": "string",
|
|
1329
|
+
"const": "Source Waste Type"
|
|
1330
|
+
},
|
|
1331
|
+
"value": {
|
|
1332
|
+
"title": "Waste Type",
|
|
1333
|
+
"description": "Category or type of waste material",
|
|
1334
|
+
"examples": [
|
|
1335
|
+
"Organic",
|
|
1336
|
+
"Plastic",
|
|
1337
|
+
"Metal"
|
|
1338
|
+
],
|
|
1339
|
+
"type": "string",
|
|
1340
|
+
"minLength": 1,
|
|
1341
|
+
"maxLength": 100
|
|
1342
|
+
},
|
|
1343
|
+
"display_type": {
|
|
1344
|
+
"title": "Display Type",
|
|
1345
|
+
"description": "How the trait should be displayed in marketplace UIs",
|
|
1346
|
+
"type": "string",
|
|
1347
|
+
"enum": [
|
|
1348
|
+
"number",
|
|
1349
|
+
"date",
|
|
1350
|
+
"boost_number",
|
|
1351
|
+
"boost_percentage"
|
|
1352
|
+
]
|
|
1353
|
+
},
|
|
1354
|
+
"max_value": {
|
|
1355
|
+
"title": "Max Value",
|
|
1356
|
+
"description": "Maximum possible value for numeric traits",
|
|
1357
|
+
"examples": [
|
|
1358
|
+
0,
|
|
1359
|
+
45.2,
|
|
1360
|
+
72.5
|
|
1361
|
+
],
|
|
1362
|
+
"type": "number",
|
|
1363
|
+
"minimum": 0
|
|
1364
|
+
}
|
|
1365
|
+
},
|
|
1366
|
+
"required": [
|
|
1367
|
+
"trait_type",
|
|
1368
|
+
"value"
|
|
1369
|
+
],
|
|
1370
|
+
"additionalProperties": false
|
|
1371
|
+
},
|
|
1372
|
+
{
|
|
1373
|
+
"title": "Source Weight Attribute",
|
|
1374
|
+
"description": "Source weight attribute with numeric display",
|
|
1375
|
+
"type": "object",
|
|
1376
|
+
"properties": {
|
|
1377
|
+
"trait_type": {
|
|
1378
|
+
"type": "string",
|
|
1379
|
+
"const": "Source Weight (kg)"
|
|
1380
|
+
},
|
|
1381
|
+
"value": {
|
|
1382
|
+
"title": "Source Weight",
|
|
1383
|
+
"description": "Weight of the source waste in kilograms",
|
|
1384
|
+
"examples": [
|
|
1385
|
+
3000,
|
|
1386
|
+
1500,
|
|
1387
|
+
500
|
|
1388
|
+
],
|
|
1389
|
+
"type": "number",
|
|
1390
|
+
"minimum": 0
|
|
1391
|
+
},
|
|
1392
|
+
"display_type": {
|
|
1393
|
+
"type": "string",
|
|
1394
|
+
"const": "number"
|
|
1395
|
+
},
|
|
1396
|
+
"max_value": {
|
|
1397
|
+
"title": "Max Value",
|
|
1398
|
+
"description": "Maximum possible value for numeric traits",
|
|
1399
|
+
"examples": [
|
|
1400
|
+
0,
|
|
1401
|
+
45.2,
|
|
1402
|
+
72.5
|
|
1403
|
+
],
|
|
1404
|
+
"type": "number",
|
|
1405
|
+
"minimum": 0
|
|
1406
|
+
}
|
|
1407
|
+
},
|
|
1408
|
+
"required": [
|
|
1409
|
+
"trait_type",
|
|
1410
|
+
"value",
|
|
1411
|
+
"display_type"
|
|
1412
|
+
],
|
|
1413
|
+
"additionalProperties": false
|
|
1414
|
+
},
|
|
1415
|
+
{
|
|
1416
|
+
"title": "Origin Country Attribute",
|
|
1417
|
+
"description": "Origin country attribute",
|
|
1418
|
+
"type": "object",
|
|
1419
|
+
"properties": {
|
|
1420
|
+
"trait_type": {
|
|
1421
|
+
"type": "string",
|
|
1422
|
+
"const": "Origin Country"
|
|
1423
|
+
},
|
|
1424
|
+
"value": {
|
|
1425
|
+
"title": "Country",
|
|
1426
|
+
"description": "Full country name in English",
|
|
1427
|
+
"examples": [
|
|
1428
|
+
"Brazil",
|
|
1429
|
+
"United States",
|
|
1430
|
+
"Germany",
|
|
1431
|
+
"Japan"
|
|
1432
|
+
],
|
|
1433
|
+
"type": "string",
|
|
1434
|
+
"minLength": 1,
|
|
1435
|
+
"maxLength": 50
|
|
1436
|
+
},
|
|
1437
|
+
"display_type": {
|
|
1438
|
+
"title": "Display Type",
|
|
1439
|
+
"description": "How the trait should be displayed in marketplace UIs",
|
|
1440
|
+
"type": "string",
|
|
1441
|
+
"enum": [
|
|
1442
|
+
"number",
|
|
1443
|
+
"date",
|
|
1444
|
+
"boost_number",
|
|
1445
|
+
"boost_percentage"
|
|
1446
|
+
]
|
|
1447
|
+
},
|
|
1448
|
+
"max_value": {
|
|
1449
|
+
"title": "Max Value",
|
|
1450
|
+
"description": "Maximum possible value for numeric traits",
|
|
1451
|
+
"examples": [
|
|
1452
|
+
0,
|
|
1453
|
+
45.2,
|
|
1454
|
+
72.5
|
|
1455
|
+
],
|
|
1456
|
+
"type": "number",
|
|
1457
|
+
"minimum": 0
|
|
1458
|
+
}
|
|
1459
|
+
},
|
|
1460
|
+
"required": [
|
|
1461
|
+
"trait_type",
|
|
1462
|
+
"value"
|
|
1463
|
+
],
|
|
1464
|
+
"additionalProperties": false
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
"title": "Origin Municipality Attribute",
|
|
1468
|
+
"description": "Origin municipality attribute",
|
|
1469
|
+
"type": "object",
|
|
1470
|
+
"properties": {
|
|
1471
|
+
"trait_type": {
|
|
1472
|
+
"type": "string",
|
|
1473
|
+
"const": "Origin Municipality"
|
|
1474
|
+
},
|
|
1475
|
+
"value": {
|
|
1476
|
+
"title": "Municipality",
|
|
1477
|
+
"description": "Municipality or city name",
|
|
1478
|
+
"examples": [
|
|
1479
|
+
"Macapá",
|
|
1480
|
+
"São Paulo",
|
|
1481
|
+
"New York",
|
|
1482
|
+
"Berlin",
|
|
1483
|
+
"Tokyo"
|
|
1484
|
+
],
|
|
1485
|
+
"type": "string",
|
|
1486
|
+
"minLength": 1,
|
|
1487
|
+
"maxLength": 50
|
|
1488
|
+
},
|
|
1489
|
+
"display_type": {
|
|
1490
|
+
"title": "Display Type",
|
|
1491
|
+
"description": "How the trait should be displayed in marketplace UIs",
|
|
1492
|
+
"type": "string",
|
|
1493
|
+
"enum": [
|
|
1494
|
+
"number",
|
|
1495
|
+
"date",
|
|
1496
|
+
"boost_number",
|
|
1497
|
+
"boost_percentage"
|
|
1498
|
+
]
|
|
1499
|
+
},
|
|
1500
|
+
"max_value": {
|
|
1501
|
+
"title": "Max Value",
|
|
1502
|
+
"description": "Maximum possible value for numeric traits",
|
|
1503
|
+
"examples": [
|
|
1504
|
+
0,
|
|
1505
|
+
45.2,
|
|
1506
|
+
72.5
|
|
1507
|
+
],
|
|
1508
|
+
"type": "number",
|
|
1509
|
+
"minimum": 0
|
|
1510
|
+
}
|
|
1511
|
+
},
|
|
1512
|
+
"required": [
|
|
1513
|
+
"trait_type",
|
|
1514
|
+
"value"
|
|
1515
|
+
],
|
|
1516
|
+
"additionalProperties": false
|
|
1517
|
+
},
|
|
1518
|
+
{
|
|
1519
|
+
"title": "Recycler Attribute",
|
|
1520
|
+
"description": "Recycler attribute",
|
|
1521
|
+
"type": "object",
|
|
1522
|
+
"properties": {
|
|
1523
|
+
"trait_type": {
|
|
1524
|
+
"type": "string",
|
|
1525
|
+
"const": "Recycler"
|
|
1526
|
+
},
|
|
1527
|
+
"value": {
|
|
1528
|
+
"title": "Recycler",
|
|
1529
|
+
"description": "Organization that processed the waste",
|
|
1530
|
+
"example": "Eco Reciclagem",
|
|
1531
|
+
"type": "string",
|
|
1532
|
+
"minLength": 1,
|
|
1533
|
+
"maxLength": 100
|
|
1534
|
+
},
|
|
1535
|
+
"display_type": {
|
|
1536
|
+
"title": "Display Type",
|
|
1537
|
+
"description": "How the trait should be displayed in marketplace UIs",
|
|
1538
|
+
"type": "string",
|
|
1539
|
+
"enum": [
|
|
1540
|
+
"number",
|
|
1541
|
+
"date",
|
|
1542
|
+
"boost_number",
|
|
1543
|
+
"boost_percentage"
|
|
1544
|
+
]
|
|
1545
|
+
},
|
|
1546
|
+
"max_value": {
|
|
1547
|
+
"title": "Max Value",
|
|
1548
|
+
"description": "Maximum possible value for numeric traits",
|
|
1549
|
+
"examples": [
|
|
1550
|
+
0,
|
|
1551
|
+
45.2,
|
|
1552
|
+
72.5
|
|
1553
|
+
],
|
|
1554
|
+
"type": "number",
|
|
1555
|
+
"minimum": 0
|
|
1556
|
+
}
|
|
1557
|
+
},
|
|
1558
|
+
"required": [
|
|
1559
|
+
"trait_type",
|
|
1560
|
+
"value"
|
|
1561
|
+
],
|
|
1562
|
+
"additionalProperties": false
|
|
1563
|
+
},
|
|
1564
|
+
{
|
|
1565
|
+
"title": "MassID Token ID Attribute",
|
|
1566
|
+
"description": "MassID token ID attribute",
|
|
1567
|
+
"type": "object",
|
|
1568
|
+
"properties": {
|
|
1569
|
+
"trait_type": {
|
|
1570
|
+
"type": "string",
|
|
1571
|
+
"const": "MassID"
|
|
1572
|
+
},
|
|
1573
|
+
"value": {
|
|
1574
|
+
"title": "MassID Token ID",
|
|
1575
|
+
"description": "Token ID of the source MassID NFT as #<token_id>",
|
|
1576
|
+
"example": "#123",
|
|
1577
|
+
"type": "string",
|
|
1578
|
+
"minLength": 1,
|
|
1579
|
+
"pattern": "^#\\d+$"
|
|
1580
|
+
},
|
|
1581
|
+
"display_type": {
|
|
1582
|
+
"title": "Display Type",
|
|
1583
|
+
"description": "How the trait should be displayed in marketplace UIs",
|
|
1584
|
+
"type": "string",
|
|
1585
|
+
"enum": [
|
|
1586
|
+
"number",
|
|
1587
|
+
"date",
|
|
1588
|
+
"boost_number",
|
|
1589
|
+
"boost_percentage"
|
|
1590
|
+
]
|
|
1591
|
+
},
|
|
1592
|
+
"max_value": {
|
|
1593
|
+
"title": "Max Value",
|
|
1594
|
+
"description": "Maximum possible value for numeric traits",
|
|
1595
|
+
"examples": [
|
|
1596
|
+
0,
|
|
1597
|
+
45.2,
|
|
1598
|
+
72.5
|
|
1599
|
+
],
|
|
1600
|
+
"type": "number",
|
|
1601
|
+
"minimum": 0
|
|
1602
|
+
}
|
|
1603
|
+
},
|
|
1604
|
+
"required": [
|
|
1605
|
+
"trait_type",
|
|
1606
|
+
"value"
|
|
1607
|
+
],
|
|
1608
|
+
"additionalProperties": false
|
|
1609
|
+
},
|
|
1610
|
+
{
|
|
1611
|
+
"title": "MassID Recycling Date Attribute",
|
|
1612
|
+
"description": "MassID recycling date attribute using Unix timestamp in milliseconds",
|
|
1613
|
+
"type": "object",
|
|
1614
|
+
"properties": {
|
|
1615
|
+
"trait_type": {
|
|
1616
|
+
"type": "string",
|
|
1617
|
+
"const": "MassID Recycling Date"
|
|
1618
|
+
},
|
|
1619
|
+
"value": {
|
|
1620
|
+
"title": "MassID Recycling Date",
|
|
1621
|
+
"description": "Unix timestamp in milliseconds when the source waste was recycled",
|
|
1622
|
+
"examples": [
|
|
1623
|
+
1704067200000,
|
|
1624
|
+
1735689600000,
|
|
1625
|
+
1762371245149
|
|
1626
|
+
],
|
|
1627
|
+
"type": "integer",
|
|
1628
|
+
"exclusiveMinimum": 0,
|
|
1629
|
+
"maximum": 9007199254740991
|
|
1630
|
+
},
|
|
1631
|
+
"display_type": {
|
|
1632
|
+
"type": "string",
|
|
1633
|
+
"const": "date"
|
|
1634
|
+
}
|
|
1635
|
+
},
|
|
1636
|
+
"required": [
|
|
1637
|
+
"trait_type",
|
|
1638
|
+
"value",
|
|
1639
|
+
"display_type"
|
|
1640
|
+
],
|
|
1641
|
+
"additionalProperties": false
|
|
1642
|
+
}
|
|
1643
|
+
],
|
|
1644
|
+
"items": false
|
|
27
1645
|
}
|
|
28
|
-
|
|
29
|
-
|
|
1646
|
+
},
|
|
1647
|
+
"required": [
|
|
1648
|
+
"$schema",
|
|
1649
|
+
"schema",
|
|
1650
|
+
"created_at",
|
|
1651
|
+
"external_id",
|
|
1652
|
+
"external_url",
|
|
1653
|
+
"original_content_hash",
|
|
1654
|
+
"content_hash",
|
|
1655
|
+
"data",
|
|
1656
|
+
"blockchain",
|
|
1657
|
+
"name",
|
|
1658
|
+
"short_name",
|
|
1659
|
+
"description",
|
|
1660
|
+
"image",
|
|
1661
|
+
"attributes"
|
|
1662
|
+
],
|
|
1663
|
+
"additionalProperties": false
|
|
1664
|
+
}
|