@carrot-foundation/schemas 0.1.39 → 0.1.40

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.
@@ -2,8 +2,8 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "title": "MassID NFT IPFS Record",
4
4
  "description": "Complete MassID NFT IPFS record including fixed attributes and detailed waste tracking data",
5
- "$id": "https://raw.githubusercontent.com/carrot-foundation/schemas/refs/tags/0.1.39/schemas/ipfs/mass-id/mass-id.schema.json",
6
- "version": "0.1.39",
5
+ "$id": "https://raw.githubusercontent.com/carrot-foundation/schemas/refs/tags/0.1.40/schemas/ipfs/mass-id/mass-id.schema.json",
6
+ "version": "0.1.40",
7
7
  "type": "object",
8
8
  "properties": {
9
9
  "$schema": {
@@ -254,7 +254,7 @@
254
254
  },
255
255
  "data": {
256
256
  "title": "MassID Data",
257
- "description": "MassID data containing waste tracking and chain of custody information",
257
+ "description": "MassID data containing waste tracking events and supporting information",
258
258
  "type": "object",
259
259
  "properties": {
260
260
  "waste_properties": {
@@ -266,9 +266,7 @@
266
266
  "title": "Waste Type",
267
267
  "description": "Waste material category",
268
268
  "examples": [
269
- "Organic",
270
- "Plastic",
271
- "Metal"
269
+ "Organic"
272
270
  ],
273
271
  "type": "string",
274
272
  "minLength": 1,
@@ -278,9 +276,7 @@
278
276
  "title": "Waste Subtype",
279
277
  "description": "Specific subcategory of waste material",
280
278
  "examples": [
281
- "Food, Food Waste and Beverages",
282
- "PET Bottles",
283
- "Aluminum Cans"
279
+ "Food, Food Waste and Beverages"
284
280
  ],
285
281
  "type": "string",
286
282
  "minLength": 1,
@@ -288,74 +284,47 @@
288
284
  },
289
285
  "local_classification": {
290
286
  "title": "Local Classification",
291
- "description": "Local or regional waste classification codes and descriptions",
287
+ "description": "Regulatory classification reference for the waste material",
288
+ "examples": [
289
+ {
290
+ "code": "04 02 20",
291
+ "system": "Ibama"
292
+ }
293
+ ],
292
294
  "type": "object",
293
295
  "properties": {
294
296
  "code": {
295
- "title": "Classification Code",
296
- "description": "Local waste classification code",
297
+ "title": "Ibama Classification Code",
298
+ "description": "Ibama waste classification code in the format NN NN NN with required spaces and optional trailing *",
297
299
  "examples": [
298
300
  "20 01 01",
299
- "D001",
300
- "EWC-150101",
301
- "IBAMA-A001"
301
+ "20 01 01*",
302
+ "04 02 20"
302
303
  ],
303
304
  "type": "string",
304
- "minLength": 1,
305
- "maxLength": 20
306
- },
307
- "description": {
308
- "title": "Classification Description",
309
- "description": "Local waste classification description",
310
- "examples": [
311
- "Paper and cardboard packaging",
312
- "Ignitable waste",
313
- "Paper and cardboard packaging waste",
314
- "Municipal solid waste - organic fraction"
315
- ],
316
- "type": "string",
317
- "minLength": 1,
318
- "maxLength": 200
305
+ "pattern": "^\\d{2} \\d{2} \\d{2}\\*?$"
319
306
  },
320
307
  "system": {
321
308
  "title": "Classification System",
322
- "description": "Classification system name - currently supports IBAMA (Instituto Brasileiro do Meio Ambiente e dos Recursos Naturais Renováveis)",
309
+ "description": "Authority or standard providing the classification code",
323
310
  "examples": [
324
- "IBAMA"
311
+ "Ibama"
325
312
  ],
326
313
  "type": "string",
327
- "enum": [
328
- "IBAMA"
329
- ]
314
+ "const": "Ibama"
330
315
  }
331
316
  },
332
317
  "required": [
333
318
  "code",
334
- "description",
335
319
  "system"
336
320
  ],
337
321
  "additionalProperties": false
338
322
  },
339
- "measurement_unit": {
340
- "title": "Measurement Unit",
341
- "description": "Unit of measurement for the waste quantity",
342
- "examples": [
343
- "kg",
344
- "ton"
345
- ],
346
- "type": "string",
347
- "enum": [
348
- "kg",
349
- "ton"
350
- ]
351
- },
352
323
  "net_weight": {
353
- "title": "Net Weight",
354
- "description": "Net weight of the waste batch in the specified measurement unit",
324
+ "title": "Net Weight (kg)",
325
+ "description": "Net weight of the waste batch in kilograms (kg)",
355
326
  "examples": [
356
- 0,
357
- 45.2,
358
- 72.5
327
+ 3000
359
328
  ],
360
329
  "type": "number",
361
330
  "minimum": 0
@@ -364,7 +333,6 @@
364
333
  "required": [
365
334
  "type",
366
335
  "subtype",
367
- "measurement_unit",
368
336
  "net_weight"
369
337
  ],
370
338
  "additionalProperties": false
@@ -515,22 +483,6 @@
515
483
  "precision_level"
516
484
  ],
517
485
  "additionalProperties": false
518
- },
519
- "facility_type": {
520
- "title": "Facility Type",
521
- "description": "Type of facility in the waste management chain",
522
- "examples": [
523
- "Collection Point",
524
- "Recycling Facility",
525
- "Administrative Office"
526
- ],
527
- "type": "string",
528
- "enum": [
529
- "Collection Point",
530
- "Recycling Facility",
531
- "Administrative Office",
532
- "Other"
533
- ]
534
486
  }
535
487
  },
536
488
  "required": [
@@ -604,19 +556,16 @@
604
556
  "additionalProperties": false
605
557
  }
606
558
  },
607
- "chain_of_custody": {
608
- "title": "Chain of Custody",
609
- "description": "Complete chain of custody tracking from waste generation to final processing",
610
- "type": "object",
611
- "properties": {
612
- "events": {
613
- "title": "Custody Events",
614
- "description": "Chronological sequence of custody transfer and processing events",
615
- "minItems": 1,
616
- "type": "array",
617
- "items": {
618
- "title": "Chain of Custody Event",
619
- "description": "Chain of custody event",
559
+ "events": {
560
+ "title": "MassID Events",
561
+ "description": "Chronological sequence of custody transfer, processing, and recycling events",
562
+ "minItems": 1,
563
+ "type": "array",
564
+ "items": {
565
+ "title": "MassID Event",
566
+ "description": "Lifecycle event describing custody, processing, documentation, or recycling steps",
567
+ "oneOf": [
568
+ {
620
569
  "type": "object",
621
570
  "properties": {
622
571
  "event_id": {
@@ -631,18 +580,371 @@
631
580
  "format": "uuid",
632
581
  "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})$"
633
582
  },
583
+ "description": {
584
+ "title": "Event Description",
585
+ "description": "Detailed description of what happened during this event",
586
+ "examples": [
587
+ "Waste collected from residential area using collection truck",
588
+ "Material sorted into recyclable and non-recyclable fractions",
589
+ "Waste transferred to authorized recycling facility"
590
+ ],
591
+ "type": "string",
592
+ "minLength": 1,
593
+ "maxLength": 200
594
+ },
595
+ "timestamp": {
596
+ "title": "Event Timestamp",
597
+ "description": "ISO 8601 timestamp when the event occurred",
598
+ "examples": [
599
+ "2024-12-05T11:02:47.000Z",
600
+ "2025-02-22T10:35:12.000Z"
601
+ ],
602
+ "type": "string",
603
+ "format": "date-time",
604
+ "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))$"
605
+ },
606
+ "participant_id_hash": {
607
+ "title": "Participant ID Hash",
608
+ "description": "Reference to participant in the participants array",
609
+ "examples": [
610
+ "87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
611
+ "6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
612
+ ],
613
+ "type": "string",
614
+ "pattern": "^[0-9a-fA-F]{64}$"
615
+ },
616
+ "location_id_hash": {
617
+ "title": "Location ID Hash",
618
+ "description": "Reference to location in the locations array",
619
+ "examples": [
620
+ "87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
621
+ "6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
622
+ ],
623
+ "type": "string",
624
+ "pattern": "^[0-9a-fA-F]{64}$"
625
+ },
626
+ "weight": {
627
+ "title": "Event Weight (kg)",
628
+ "description": "Mass weight after this event in kilograms (kg)",
629
+ "examples": [
630
+ 3000,
631
+ 1500,
632
+ 500
633
+ ],
634
+ "type": "number",
635
+ "minimum": 0
636
+ },
637
+ "event_name": {
638
+ "title": "Event Name",
639
+ "description": "Pick-up event discriminator",
640
+ "examples": [
641
+ "Pick-up"
642
+ ],
643
+ "type": "string",
644
+ "const": "Pick-up"
645
+ },
646
+ "data": {
647
+ "title": "Pick-up Event Data",
648
+ "description": "Vehicle information associated with the pick-up event",
649
+ "type": "object",
650
+ "properties": {
651
+ "vehicle_type": {
652
+ "title": "Vehicle Type",
653
+ "description": "Type of vehicle used for pick-up operations",
654
+ "examples": [
655
+ "Truck",
656
+ "Van",
657
+ "Compactor"
658
+ ],
659
+ "type": "string",
660
+ "minLength": 1,
661
+ "maxLength": 50
662
+ }
663
+ },
664
+ "additionalProperties": false
665
+ }
666
+ },
667
+ "required": [
668
+ "event_id",
669
+ "timestamp",
670
+ "participant_id_hash",
671
+ "location_id_hash",
672
+ "event_name"
673
+ ],
674
+ "additionalProperties": false
675
+ },
676
+ {
677
+ "type": "object",
678
+ "properties": {
679
+ "event_id": {
680
+ "title": "Event ID",
681
+ "description": "Unique event identifier",
682
+ "examples": [
683
+ "ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
684
+ "6f520d88-864d-432d-bf9f-5c3166c4818f",
685
+ "f77afa89-1c58-40fd-9bf5-8a86703a8af4"
686
+ ],
687
+ "type": "string",
688
+ "format": "uuid",
689
+ "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})$"
690
+ },
691
+ "description": {
692
+ "title": "Event Description",
693
+ "description": "Detailed description of what happened during this event",
694
+ "examples": [
695
+ "Waste collected from residential area using collection truck",
696
+ "Material sorted into recyclable and non-recyclable fractions",
697
+ "Waste transferred to authorized recycling facility"
698
+ ],
699
+ "type": "string",
700
+ "minLength": 1,
701
+ "maxLength": 200
702
+ },
703
+ "timestamp": {
704
+ "title": "Event Timestamp",
705
+ "description": "ISO 8601 timestamp when the event occurred",
706
+ "examples": [
707
+ "2024-12-05T11:02:47.000Z",
708
+ "2025-02-22T10:35:12.000Z"
709
+ ],
710
+ "type": "string",
711
+ "format": "date-time",
712
+ "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))$"
713
+ },
714
+ "participant_id_hash": {
715
+ "title": "Participant ID Hash",
716
+ "description": "Reference to participant in the participants array",
717
+ "examples": [
718
+ "87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
719
+ "6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
720
+ ],
721
+ "type": "string",
722
+ "pattern": "^[0-9a-fA-F]{64}$"
723
+ },
724
+ "location_id_hash": {
725
+ "title": "Location ID Hash",
726
+ "description": "Reference to location in the locations array",
727
+ "examples": [
728
+ "87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
729
+ "6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
730
+ ],
731
+ "type": "string",
732
+ "pattern": "^[0-9a-fA-F]{64}$"
733
+ },
734
+ "weight": {
735
+ "title": "Event Weight (kg)",
736
+ "description": "Mass weight after this event in kilograms (kg)",
737
+ "examples": [
738
+ 3000,
739
+ 1500,
740
+ 500
741
+ ],
742
+ "type": "number",
743
+ "minimum": 0
744
+ },
634
745
  "event_name": {
635
746
  "title": "Event Name",
636
- "description": "Name of custody or processing event",
747
+ "description": "Weighing event discriminator",
637
748
  "examples": [
638
- "Sorting",
639
- "Processing",
640
- "Recycling",
641
749
  "Weighing"
642
750
  ],
643
751
  "type": "string",
752
+ "const": "Weighing"
753
+ },
754
+ "data": {
755
+ "title": "Weighing Event Data",
756
+ "description": "Weighing operational details including capture method, equipment, and weights",
757
+ "type": "object",
758
+ "properties": {
759
+ "weighing_capture_method": {
760
+ "title": "Weighing Capture Method",
761
+ "description": "Method used to capture the weight measurement",
762
+ "examples": [
763
+ "Digital scale integration",
764
+ "Manual entry",
765
+ "Automated capture via IoT scale"
766
+ ],
767
+ "type": "string",
768
+ "minLength": 1,
769
+ "maxLength": 100
770
+ },
771
+ "scale_type": {
772
+ "title": "Scale Type",
773
+ "description": "Type of scale used to weigh the load",
774
+ "examples": [
775
+ "Weighbridge (Truck Scale)",
776
+ "Axle scale"
777
+ ],
778
+ "type": "string",
779
+ "minLength": 1,
780
+ "maxLength": 50
781
+ },
782
+ "container_type": {
783
+ "title": "Container Type",
784
+ "description": "Type of container holding the waste during weighing",
785
+ "examples": [
786
+ "Roll-off container",
787
+ "Front loader bin"
788
+ ],
789
+ "type": "string",
790
+ "minLength": 1,
791
+ "maxLength": 50
792
+ },
793
+ "vehicle_type": {
794
+ "title": "Vehicle Type",
795
+ "description": "Type of vehicle used during weighing",
796
+ "examples": [
797
+ "Truck",
798
+ "Trailer"
799
+ ],
800
+ "type": "string",
801
+ "minLength": 1,
802
+ "maxLength": 50
803
+ },
804
+ "container_capacity": {
805
+ "title": "Container Capacity (kg)",
806
+ "description": "Maximum container capacity in kilograms",
807
+ "examples": [
808
+ 12000
809
+ ],
810
+ "type": "number",
811
+ "minimum": 0
812
+ },
813
+ "gross_weight": {
814
+ "title": "Gross Weight (kg)",
815
+ "description": "Total weight including vehicle/container before tare",
816
+ "examples": [
817
+ 9500
818
+ ],
819
+ "type": "number",
820
+ "minimum": 0
821
+ },
822
+ "tare": {
823
+ "title": "Tare Weight (kg)",
824
+ "description": "Weight of the empty vehicle or container",
825
+ "examples": [
826
+ 3500
827
+ ],
828
+ "type": "number",
829
+ "minimum": 0
830
+ }
831
+ },
832
+ "additionalProperties": false
833
+ }
834
+ },
835
+ "required": [
836
+ "event_id",
837
+ "timestamp",
838
+ "participant_id_hash",
839
+ "location_id_hash",
840
+ "event_name"
841
+ ],
842
+ "additionalProperties": false
843
+ },
844
+ {
845
+ "title": "Drop-off Event",
846
+ "description": "Waste delivered to a destination location",
847
+ "type": "object",
848
+ "properties": {
849
+ "event_id": {
850
+ "title": "Event ID",
851
+ "description": "Unique event identifier",
852
+ "examples": [
853
+ "ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
854
+ "6f520d88-864d-432d-bf9f-5c3166c4818f",
855
+ "f77afa89-1c58-40fd-9bf5-8a86703a8af4"
856
+ ],
857
+ "type": "string",
858
+ "format": "uuid",
859
+ "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})$"
860
+ },
861
+ "description": {
862
+ "title": "Event Description",
863
+ "description": "Detailed description of what happened during this event",
864
+ "examples": [
865
+ "Waste collected from residential area using collection truck",
866
+ "Material sorted into recyclable and non-recyclable fractions",
867
+ "Waste transferred to authorized recycling facility"
868
+ ],
869
+ "type": "string",
644
870
  "minLength": 1,
645
- "maxLength": 50
871
+ "maxLength": 200
872
+ },
873
+ "timestamp": {
874
+ "title": "Event Timestamp",
875
+ "description": "ISO 8601 timestamp when the event occurred",
876
+ "examples": [
877
+ "2024-12-05T11:02:47.000Z",
878
+ "2025-02-22T10:35:12.000Z"
879
+ ],
880
+ "type": "string",
881
+ "format": "date-time",
882
+ "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))$"
883
+ },
884
+ "participant_id_hash": {
885
+ "title": "Participant ID Hash",
886
+ "description": "Reference to participant in the participants array",
887
+ "examples": [
888
+ "87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
889
+ "6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
890
+ ],
891
+ "type": "string",
892
+ "pattern": "^[0-9a-fA-F]{64}$"
893
+ },
894
+ "location_id_hash": {
895
+ "title": "Location ID Hash",
896
+ "description": "Reference to location in the locations array",
897
+ "examples": [
898
+ "87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
899
+ "6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
900
+ ],
901
+ "type": "string",
902
+ "pattern": "^[0-9a-fA-F]{64}$"
903
+ },
904
+ "weight": {
905
+ "title": "Event Weight (kg)",
906
+ "description": "Mass weight after this event in kilograms (kg)",
907
+ "examples": [
908
+ 3000,
909
+ 1500,
910
+ 500
911
+ ],
912
+ "type": "number",
913
+ "minimum": 0
914
+ },
915
+ "event_name": {
916
+ "title": "Event Name",
917
+ "description": "Drop-off event discriminator",
918
+ "examples": [
919
+ "Drop-off"
920
+ ],
921
+ "type": "string",
922
+ "const": "Drop-off"
923
+ }
924
+ },
925
+ "required": [
926
+ "event_id",
927
+ "timestamp",
928
+ "participant_id_hash",
929
+ "location_id_hash",
930
+ "event_name"
931
+ ],
932
+ "additionalProperties": false
933
+ },
934
+ {
935
+ "type": "object",
936
+ "properties": {
937
+ "event_id": {
938
+ "title": "Event ID",
939
+ "description": "Unique event identifier",
940
+ "examples": [
941
+ "ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
942
+ "6f520d88-864d-432d-bf9f-5c3166c4818f",
943
+ "f77afa89-1c58-40fd-9bf5-8a86703a8af4"
944
+ ],
945
+ "type": "string",
946
+ "format": "uuid",
947
+ "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})$"
646
948
  },
647
949
  "description": {
648
950
  "title": "Event Description",
@@ -650,10 +952,7 @@
650
952
  "examples": [
651
953
  "Waste collected from residential area using collection truck",
652
954
  "Material sorted into recyclable and non-recyclable fractions",
653
- "Plastic waste processed through shredding and washing",
654
- "Waste transferred to authorized recycling facility",
655
- "Final disposal at licensed landfill site",
656
- "Quality inspection and contamination assessment completed"
955
+ "Waste transferred to authorized recycling facility"
657
956
  ],
658
957
  "type": "string",
659
958
  "minLength": 1,
@@ -661,15 +960,14 @@
661
960
  },
662
961
  "timestamp": {
663
962
  "title": "Event Timestamp",
664
- "description": "Unix timestamp in milliseconds when the event occurred",
963
+ "description": "ISO 8601 timestamp when the event occurred",
665
964
  "examples": [
666
- 1710518400000,
667
- 1704067200000,
668
- 1715270400000
965
+ "2024-12-05T11:02:47.000Z",
966
+ "2025-02-22T10:35:12.000Z"
669
967
  ],
670
- "type": "integer",
671
- "exclusiveMinimum": 0,
672
- "maximum": 9007199254740991
968
+ "type": "string",
969
+ "format": "date-time",
970
+ "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))$"
673
971
  },
674
972
  "participant_id_hash": {
675
973
  "title": "Participant ID Hash",
@@ -692,279 +990,224 @@
692
990
  "pattern": "^[0-9a-fA-F]{64}$"
693
991
  },
694
992
  "weight": {
695
- "title": "Event Weight",
696
- "description": "Mass weight after this event",
993
+ "title": "Event Weight (kg)",
994
+ "description": "Mass weight after this event in kilograms (kg)",
697
995
  "examples": [
698
- 0,
699
- 45.2,
700
- 72.5
996
+ 3000,
997
+ 1500,
998
+ 500
701
999
  ],
702
1000
  "type": "number",
703
1001
  "minimum": 0
704
1002
  },
705
- "attributes": {
706
- "title": "Event Attributes",
707
- "description": "Additional attributes specific to this event",
708
- "type": "array",
709
- "items": {
710
- "title": "Event Attribute",
711
- "description": "Additional attribute specific to an event",
712
- "type": "object",
713
- "properties": {
714
- "name": {
715
- "title": "Attribute Name",
716
- "description": "Event attribute name",
717
- "examples": [
718
- "temperature",
719
- "humidity",
720
- "contamination_percentage",
721
- "quality_grade",
722
- "batch_number",
723
- "operator_id",
724
- "equipment_used",
725
- "processing_cost"
726
- ],
727
- "type": "string",
728
- "minLength": 1,
729
- "maxLength": 100
730
- },
731
- "value": {
732
- "title": "Attribute Value",
733
- "description": "Event attribute value",
734
- "examples": [
735
- 25.5,
736
- "Grade A",
737
- true,
738
- "BATCH-2024-001",
739
- 12.75,
740
- "Shredder-X200",
741
- false,
742
- "OP-456"
743
- ],
744
- "anyOf": [
745
- {
746
- "type": "string"
747
- },
748
- {
749
- "type": "number"
750
- },
751
- {
752
- "type": "boolean"
753
- }
754
- ]
755
- },
756
- "preserved_sensitivity": {
757
- "title": "Preserved Sensitivity",
758
- "description": "Indicates if the attribute contains sensitive information that was preserved",
759
- "type": "boolean"
760
- },
761
- "format": {
762
- "title": "Event Attribute Format",
763
- "description": "Data format hint for proper display",
764
- "examples": [
765
- "KILOGRAM",
766
- "DATE",
767
- "PERCENTAGE"
768
- ],
769
- "type": "string",
770
- "enum": [
771
- "KILOGRAM",
772
- "DATE",
773
- "CURRENCY",
774
- "PERCENTAGE",
775
- "COORDINATE"
776
- ]
777
- }
778
- },
779
- "required": [
780
- "name"
781
- ],
782
- "additionalProperties": false
783
- }
1003
+ "event_name": {
1004
+ "title": "Event Name",
1005
+ "description": "Sorting event discriminator",
1006
+ "examples": [
1007
+ "Sorting"
1008
+ ],
1009
+ "type": "string",
1010
+ "const": "Sorting"
784
1011
  },
785
- "attachments": {
786
- "title": "Event Attachments",
787
- "description": "Associated attachments for this event",
788
- "type": "array",
789
- "items": {
790
- "title": "Event Attachment",
791
- "description": "Supporting event attachment",
792
- "type": "object",
793
- "properties": {
794
- "type": {
795
- "title": "Attachment Type",
796
- "description": "Type of supporting attachment",
797
- "examples": [
798
- "Waste Transfer Note",
799
- "Certificate of Disposal",
800
- "Certificate of Final Destination",
801
- "Quality Assessment Report",
802
- "Transport Manifest",
803
- "Processing Receipt",
804
- "Environmental Permit",
805
- "Invoice"
806
- ],
807
- "type": "string",
808
- "minLength": 1,
809
- "maxLength": 50
810
- },
811
- "document_number": {
812
- "title": "Document Number",
813
- "description": "Official document number if applicable",
814
- "examples": [
815
- "WTN-2024-001234",
816
- "CD-ENV-456789",
817
- "INV-2024-QTR1-789",
818
- "PERMIT-EPA-2024-001",
819
- "MANIFEST-DOT-567890"
820
- ],
821
- "type": "string",
822
- "minLength": 1,
823
- "maxLength": 50
824
- },
825
- "reference": {
826
- "title": "Attachment Reference",
827
- "description": "Reference to attachment (IPFS hash, file name, or external URL)",
828
- "examples": [
829
- "QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o",
830
- "waste_transfer_note_2024_001.pdf",
831
- "https://docs.example.com/certificates/disposal_cert_456.pdf",
832
- "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
833
- "processing_receipt_20240315.jpg"
834
- ],
835
- "type": "string",
836
- "minLength": 1
837
- },
838
- "issue_timestamp": {
839
- "title": "Issue Timestamp",
840
- "description": "Unix timestamp in milliseconds when the attachment was issued",
841
- "examples": [
842
- 1710518400000,
843
- 1704067200000,
844
- 1715270400000
845
- ],
846
- "type": "integer",
847
- "exclusiveMinimum": 0,
848
- "maximum": 9007199254740991
849
- },
850
- "issuer": {
851
- "title": "Attachment Issuer",
852
- "description": "Entity that issued the attachment",
853
- "examples": [
854
- "Environmental Protection Agency",
855
- "Waste Management Solutions Ltd",
856
- "Green Recycling Corp",
857
- "City Waste Authority",
858
- "EcoProcess Industries",
859
- "Regional Environmental Office"
860
- ],
861
- "type": "string",
862
- "minLength": 1,
863
- "maxLength": 100
864
- }
1012
+ "data": {
1013
+ "title": "Sorting Event Data",
1014
+ "description": "Weights associated with sorting, including initial and deducted amounts",
1015
+ "type": "object",
1016
+ "properties": {
1017
+ "initial_weight": {
1018
+ "title": "Initial Weight (kg)",
1019
+ "description": "Weight of the material entering the sorting process in kilograms",
1020
+ "examples": [
1021
+ 5000
1022
+ ],
1023
+ "type": "number",
1024
+ "minimum": 0
865
1025
  },
866
- "required": [
867
- "type",
868
- "reference"
869
- ],
870
- "additionalProperties": false
871
- }
1026
+ "deducted_weight": {
1027
+ "title": "Deducted Weight (kg)",
1028
+ "description": "Weight removed during sorting (e.g., contaminants or moisture) in kilograms",
1029
+ "examples": [
1030
+ 250
1031
+ ],
1032
+ "type": "number",
1033
+ "minimum": 0
1034
+ }
1035
+ },
1036
+ "additionalProperties": false
872
1037
  }
873
1038
  },
874
1039
  "required": [
875
1040
  "event_id",
876
- "event_name",
877
1041
  "timestamp",
878
1042
  "participant_id_hash",
879
- "location_id_hash"
1043
+ "location_id_hash",
1044
+ "event_name"
1045
+ ],
1046
+ "additionalProperties": false
1047
+ },
1048
+ {
1049
+ "title": "Recycling Event",
1050
+ "description": "Waste processed or recycled at the destination",
1051
+ "type": "object",
1052
+ "properties": {
1053
+ "event_id": {
1054
+ "title": "Event ID",
1055
+ "description": "Unique event identifier",
1056
+ "examples": [
1057
+ "ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
1058
+ "6f520d88-864d-432d-bf9f-5c3166c4818f",
1059
+ "f77afa89-1c58-40fd-9bf5-8a86703a8af4"
1060
+ ],
1061
+ "type": "string",
1062
+ "format": "uuid",
1063
+ "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})$"
1064
+ },
1065
+ "description": {
1066
+ "title": "Event Description",
1067
+ "description": "Detailed description of what happened during this event",
1068
+ "examples": [
1069
+ "Waste collected from residential area using collection truck",
1070
+ "Material sorted into recyclable and non-recyclable fractions",
1071
+ "Waste transferred to authorized recycling facility"
1072
+ ],
1073
+ "type": "string",
1074
+ "minLength": 1,
1075
+ "maxLength": 200
1076
+ },
1077
+ "timestamp": {
1078
+ "title": "Event Timestamp",
1079
+ "description": "ISO 8601 timestamp when the event occurred",
1080
+ "examples": [
1081
+ "2024-12-05T11:02:47.000Z",
1082
+ "2025-02-22T10:35:12.000Z"
1083
+ ],
1084
+ "type": "string",
1085
+ "format": "date-time",
1086
+ "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))$"
1087
+ },
1088
+ "participant_id_hash": {
1089
+ "title": "Participant ID Hash",
1090
+ "description": "Reference to participant in the participants array",
1091
+ "examples": [
1092
+ "87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
1093
+ "6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
1094
+ ],
1095
+ "type": "string",
1096
+ "pattern": "^[0-9a-fA-F]{64}$"
1097
+ },
1098
+ "location_id_hash": {
1099
+ "title": "Location ID Hash",
1100
+ "description": "Reference to location in the locations array",
1101
+ "examples": [
1102
+ "87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
1103
+ "6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
1104
+ ],
1105
+ "type": "string",
1106
+ "pattern": "^[0-9a-fA-F]{64}$"
1107
+ },
1108
+ "weight": {
1109
+ "title": "Event Weight (kg)",
1110
+ "description": "Mass weight after this event in kilograms (kg)",
1111
+ "examples": [
1112
+ 3000,
1113
+ 1500,
1114
+ 500
1115
+ ],
1116
+ "type": "number",
1117
+ "minimum": 0
1118
+ },
1119
+ "event_name": {
1120
+ "title": "Event Name",
1121
+ "description": "Recycling event discriminator",
1122
+ "examples": [
1123
+ "Recycling"
1124
+ ],
1125
+ "type": "string",
1126
+ "const": "Recycling"
1127
+ }
1128
+ },
1129
+ "required": [
1130
+ "event_id",
1131
+ "timestamp",
1132
+ "participant_id_hash",
1133
+ "location_id_hash",
1134
+ "event_name"
880
1135
  ],
881
1136
  "additionalProperties": false
882
1137
  }
883
- },
884
- "total_duration_minutes": {
885
- "title": "Total Duration (minutes)",
886
- "description": "Total time from first to last event in minutes",
887
- "examples": [
888
- 4350,
889
- 1440,
890
- 10110
891
- ],
892
- "type": "integer",
893
- "minimum": 0,
894
- "maximum": 9007199254740991
895
- }
896
- },
897
- "required": [
898
- "events",
899
- "total_duration_minutes"
900
- ],
901
- "additionalProperties": false
1138
+ ]
1139
+ }
902
1140
  },
903
- "geographic_data": {
904
- "title": "Geographic Data",
905
- "description": "Simplified geographic information tracking waste movement from origin to destination with temporal bounds",
906
- "type": "object",
907
- "properties": {
908
- "from_location_id_hash": {
909
- "title": "From Location ID Hash",
910
- "description": "Reference hash of the location where the waste started movement",
911
- "examples": [
912
- "87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
913
- "6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
914
- ],
915
- "type": "string",
916
- "pattern": "^[0-9a-fA-F]{64}$"
917
- },
918
- "to_location_id_hash": {
919
- "title": "To Location ID Hash",
920
- "description": "Reference hash of the location where the waste ended movement",
921
- "examples": [
922
- "87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
923
- "6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
924
- ],
925
- "type": "string",
926
- "pattern": "^[0-9a-fA-F]{64}$"
927
- },
928
- "first_reported_timestamp": {
929
- "title": "First Reported Timestamp",
930
- "description": "Unix timestamp in milliseconds when the waste was first reported/collected at the origin location",
931
- "examples": [
932
- 1710518400000,
933
- 1704067200000,
934
- 1715270400000
935
- ],
936
- "type": "integer",
937
- "exclusiveMinimum": 0,
938
- "maximum": 9007199254740991
1141
+ "attachments": {
1142
+ "title": "Attachments",
1143
+ "description": "Supporting documents associated with events, linked by event_id",
1144
+ "type": "array",
1145
+ "items": {
1146
+ "title": "MassID Attachment",
1147
+ "description": "Attachment associated with a specific MassID event, linked by event_id",
1148
+ "type": "object",
1149
+ "properties": {
1150
+ "type": {
1151
+ "title": "Attachment Type",
1152
+ "description": "Type of supporting attachment linked to a MassID event",
1153
+ "examples": [
1154
+ "Recycling Manifest",
1155
+ "Transport Manifest"
1156
+ ],
1157
+ "type": "string",
1158
+ "enum": [
1159
+ "Recycling Manifest",
1160
+ "Transport Manifest"
1161
+ ]
1162
+ },
1163
+ "document_number": {
1164
+ "title": "Document Number",
1165
+ "description": "Official document number if applicable",
1166
+ "examples": [
1167
+ "2353",
1168
+ "12345"
1169
+ ],
1170
+ "type": "string",
1171
+ "minLength": 1,
1172
+ "maxLength": 50
1173
+ },
1174
+ "issued_at": {
1175
+ "title": "Issued At",
1176
+ "description": "ISO 8601 timestamp when the attachment was issued",
1177
+ "examples": [
1178
+ "2024-12-05T11:02:47.000Z",
1179
+ "2025-02-22T10:35:12.000Z"
1180
+ ],
1181
+ "type": "string",
1182
+ "format": "date-time",
1183
+ "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))$"
1184
+ },
1185
+ "event_id": {
1186
+ "title": "Event ID",
1187
+ "description": "Identifier of the event this attachment belongs to",
1188
+ "examples": [
1189
+ "ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
1190
+ "6f520d88-864d-432d-bf9f-5c3166c4818f",
1191
+ "f77afa89-1c58-40fd-9bf5-8a86703a8af4"
1192
+ ],
1193
+ "type": "string",
1194
+ "format": "uuid",
1195
+ "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})$"
1196
+ }
939
1197
  },
940
- "last_reported_timestamp": {
941
- "title": "Last Reported Timestamp",
942
- "description": "Unix timestamp in milliseconds when the waste was last reported/processed at the destination location",
943
- "examples": [
944
- 1710604800000,
945
- 1704153600000,
946
- 1715356800000
947
- ],
948
- "type": "integer",
949
- "exclusiveMinimum": 0,
950
- "maximum": 9007199254740991
951
- }
952
- },
953
- "required": [
954
- "from_location_id_hash",
955
- "to_location_id_hash",
956
- "first_reported_timestamp",
957
- "last_reported_timestamp"
958
- ],
959
- "additionalProperties": false
1198
+ "required": [
1199
+ "type",
1200
+ "event_id"
1201
+ ],
1202
+ "additionalProperties": false
1203
+ }
960
1204
  }
961
1205
  },
962
1206
  "required": [
963
1207
  "waste_properties",
964
1208
  "locations",
965
1209
  "participants",
966
- "chain_of_custody",
967
- "geographic_data"
1210
+ "events"
968
1211
  ],
969
1212
  "additionalProperties": false
970
1213
  },
@@ -987,9 +1230,8 @@
987
1230
  "title": "Chain ID",
988
1231
  "description": "Blockchain chain ID",
989
1232
  "examples": [
990
- 1,
991
1233
  137,
992
- 11155111
1234
+ 80002
993
1235
  ],
994
1236
  "type": "integer",
995
1237
  "minimum": 1,
@@ -1146,15 +1388,15 @@
1146
1388
  },
1147
1389
  "attributes": {
1148
1390
  "title": "MassID Attributes",
1149
- "description": "MassID NFT attributes array containing attributes selected from the available attribute types. The schema validates array length but does not enforce which specific attributes must be present.",
1150
- "minItems": 12,
1151
- "maxItems": 17,
1391
+ "description": "MassID NFT attributes array. Provide the canonical set covering waste (type, subtype, net weight), origin (country, municipality, administrative division), logistics (vehicle, manifests, weighing method/scale), and lifecycle timestamps (pick-up, drop-off, recycling). Length is validated; specific composition is producer-controlled.",
1392
+ "minItems": 11,
1393
+ "maxItems": 16,
1152
1394
  "type": "array",
1153
1395
  "items": {
1154
1396
  "anyOf": [
1155
1397
  {
1156
1398
  "title": "Waste Type Attribute",
1157
- "description": "Waste type attribute",
1399
+ "description": "Primary waste material category (e.g., Organic, Paper, Glass, Metal)",
1158
1400
  "type": "object",
1159
1401
  "properties": {
1160
1402
  "trait_type": {
@@ -1204,7 +1446,7 @@
1204
1446
  },
1205
1447
  {
1206
1448
  "title": "Waste Subtype Attribute",
1207
- "description": "Waste subtype attribute",
1449
+ "description": "Regulatory or operational waste subtype (e.g., Food, Food Waste and Beverages)",
1208
1450
  "type": "object",
1209
1451
  "properties": {
1210
1452
  "trait_type": {
@@ -1253,8 +1495,8 @@
1253
1495
  "additionalProperties": false
1254
1496
  },
1255
1497
  {
1256
- "title": "Weight Attribute",
1257
- "description": "Weight attribute with numeric display",
1498
+ "title": "Weight Attribute (kg)",
1499
+ "description": "Net batch weight in kilograms (kg) for this MassID",
1258
1500
  "type": "object",
1259
1501
  "properties": {
1260
1502
  "trait_type": {
@@ -1396,7 +1638,7 @@
1396
1638
  },
1397
1639
  {
1398
1640
  "title": "Origin Administrative Division Attribute",
1399
- "description": "Origin administrative division attribute",
1641
+ "description": "State/province where the waste was generated (ISO 3166-2 preferred)",
1400
1642
  "type": "object",
1401
1643
  "properties": {
1402
1644
  "trait_type": {
@@ -1445,19 +1687,19 @@
1445
1687
  "additionalProperties": false
1446
1688
  },
1447
1689
  {
1448
- "title": "Vehicle Type Attribute",
1449
- "description": "Vehicle type attribute",
1690
+ "title": "Pick-up Vehicle Type Attribute",
1691
+ "description": "Vehicle type used during pick-up",
1450
1692
  "type": "object",
1451
1693
  "properties": {
1452
1694
  "trait_type": {
1453
1695
  "type": "string",
1454
- "const": "Vehicle Type"
1696
+ "const": "Pick-up Vehicle Type"
1455
1697
  },
1456
1698
  "value": {
1457
- "title": "Vehicle Type",
1458
- "description": "Type of vehicle used for waste transportation",
1699
+ "title": "Pick-up Vehicle Type",
1700
+ "description": "Type of vehicle used for waste pick-up operations",
1459
1701
  "examples": [
1460
- "Garbage Truck",
1702
+ "Truck",
1461
1703
  "Box Truck",
1462
1704
  "Flatbed Truck",
1463
1705
  "Roll-off Truck"
@@ -1497,7 +1739,7 @@
1497
1739
  },
1498
1740
  {
1499
1741
  "title": "Recycling Method Attribute",
1500
- "description": "Recycling method attribute",
1742
+ "description": "Process applied to this mass (e.g., composting, mechanical recycling)",
1501
1743
  "type": "object",
1502
1744
  "properties": {
1503
1745
  "trait_type": {
@@ -1510,7 +1752,7 @@
1510
1752
  "examples": [
1511
1753
  "Composting",
1512
1754
  "Mechanical Recycling",
1513
- "Incineration with Energy Recovery"
1755
+ "Anaerobic Digestion"
1514
1756
  ],
1515
1757
  "type": "string",
1516
1758
  "minLength": 1,
@@ -1545,66 +1787,14 @@
1545
1787
  ],
1546
1788
  "additionalProperties": false
1547
1789
  },
1548
- {
1549
- "title": "Processing Time Attribute",
1550
- "description": "Processing time attribute with optional trait description",
1551
- "type": "object",
1552
- "properties": {
1553
- "trait_type": {
1554
- "type": "string",
1555
- "const": "Processing Time (hours)"
1556
- },
1557
- "value": {
1558
- "title": "Hours",
1559
- "description": "Time duration in hours with 0.1 hour precision",
1560
- "examples": [
1561
- 72.5,
1562
- 24,
1563
- 168.5
1564
- ],
1565
- "type": "number",
1566
- "minimum": 0,
1567
- "multipleOf": 0.1
1568
- },
1569
- "display_type": {
1570
- "title": "Display Type",
1571
- "description": "How the trait should be displayed in marketplace UIs",
1572
- "type": "string",
1573
- "enum": [
1574
- "number",
1575
- "date",
1576
- "boost_number",
1577
- "boost_percentage"
1578
- ]
1579
- },
1580
- "max_value": {
1581
- "title": "Max Value",
1582
- "description": "Maximum possible value for numeric traits",
1583
- "examples": [
1584
- 0,
1585
- 45.2,
1586
- 72.5
1587
- ],
1588
- "type": "number",
1589
- "minimum": 0
1590
- },
1591
- "trait_description": {
1592
- "title": "Processing Time Description",
1593
- "description": "Custom description for the processing time",
1594
- "type": "string",
1595
- "minLength": 1,
1596
- "maxLength": 200
1597
- }
1598
- },
1599
- "required": [
1600
- "trait_type",
1601
- "value"
1602
- ],
1603
- "additionalProperties": false
1604
- },
1605
1790
  {
1606
1791
  "title": "Local Waste Classification ID Attribute",
1607
- "description": "Local waste classification ID attribute",
1792
+ "description": "Regulatory waste classification code (e.g., Ibama format NN NN NN[*])",
1793
+ "examples": [
1794
+ "20 01 01",
1795
+ "20 01 01*",
1796
+ "04 02 20"
1797
+ ],
1608
1798
  "type": "object",
1609
1799
  "properties": {
1610
1800
  "trait_type": {
@@ -1612,16 +1802,15 @@
1612
1802
  "const": "Local Waste Classification ID"
1613
1803
  },
1614
1804
  "value": {
1615
- "title": "Local Waste Classification ID",
1616
- "description": "Local or regional waste classification identifier",
1805
+ "title": "Ibama Classification Code",
1806
+ "description": "Ibama waste classification code in the format NN NN NN with required spaces and optional trailing *",
1617
1807
  "examples": [
1618
- "04 02 20",
1619
- "IBAMA-A001",
1620
- "EWC-150101"
1808
+ "20 01 01",
1809
+ "20 01 01*",
1810
+ "04 02 20"
1621
1811
  ],
1622
1812
  "type": "string",
1623
- "minLength": 1,
1624
- "maxLength": 100
1813
+ "pattern": "^\\d{2} \\d{2} \\d{2}\\*?$"
1625
1814
  },
1626
1815
  "display_type": {
1627
1816
  "title": "Display Type",
@@ -1653,21 +1842,21 @@
1653
1842
  "additionalProperties": false
1654
1843
  },
1655
1844
  {
1656
- "title": "Recycling Manifest Code Attribute",
1657
- "description": "Recycling manifest code attribute (optional)",
1845
+ "title": "Recycling Manifest Number Attribute",
1846
+ "description": "Official recycling manifest number issued by recycling authority (optional)",
1658
1847
  "type": "object",
1659
1848
  "properties": {
1660
1849
  "trait_type": {
1661
1850
  "type": "string",
1662
- "const": "Recycling Manifest Code"
1851
+ "const": "Recycling Manifest Number"
1663
1852
  },
1664
1853
  "value": {
1665
- "title": "Recycling Manifest Code",
1666
- "description": "Concatenated recycling manifest code (Document Type + Document Number)",
1854
+ "title": "Recycling Manifest Number",
1855
+ "description": "Official recycling manifest identifier",
1667
1856
  "examples": [
1668
- "CDF-2353",
1669
- "RC-12345",
1670
- "REC-MANIFEST-789"
1857
+ "2353",
1858
+ "REC-MANIFEST-789",
1859
+ "RC12345"
1671
1860
  ],
1672
1861
  "type": "string",
1673
1862
  "minLength": 1,
@@ -1703,19 +1892,19 @@
1703
1892
  "additionalProperties": false
1704
1893
  },
1705
1894
  {
1706
- "title": "Transport Manifest Code Attribute",
1707
- "description": "Transport manifest code attribute (optional)",
1895
+ "title": "Transport Manifest Number Attribute",
1896
+ "description": "Official transport manifest number issued by logistics/transport authority (optional)",
1708
1897
  "type": "object",
1709
1898
  "properties": {
1710
1899
  "trait_type": {
1711
1900
  "type": "string",
1712
- "const": "Transport Manifest Code"
1901
+ "const": "Transport Manifest Number"
1713
1902
  },
1714
1903
  "value": {
1715
- "title": "Transport Manifest Code",
1716
- "description": "Concatenated transport manifest code (Document Type + Document Number)",
1904
+ "title": "Transport Manifest Number",
1905
+ "description": "Official transport manifest identifier",
1717
1906
  "examples": [
1718
- "MTR-4126",
1907
+ "4126",
1719
1908
  "TRN-67890",
1720
1909
  "TRANS-MANIFEST-456"
1721
1910
  ],
@@ -1765,10 +1954,9 @@
1765
1954
  "title": "Weighing Capture Method",
1766
1955
  "description": "Method used to capture weight data",
1767
1956
  "examples": [
1768
- "Digital",
1769
- "Manual",
1770
- "Automated",
1771
- "Electronic Scale"
1957
+ "Digital scale integration",
1958
+ "Manual entry",
1959
+ "Automated capture via IoT scale"
1772
1960
  ],
1773
1961
  "type": "string",
1774
1962
  "minLength": 1,
@@ -1817,8 +2005,8 @@
1817
2005
  "description": "Type of scale used for weighing",
1818
2006
  "examples": [
1819
2007
  "Weighbridge (Truck Scale)",
2008
+ "Axle scale",
1820
2009
  "Floor Scale",
1821
- "Bench Scale",
1822
2010
  "Crane Scale"
1823
2011
  ],
1824
2012
  "type": "string",
@@ -1855,38 +2043,27 @@
1855
2043
  "additionalProperties": false
1856
2044
  },
1857
2045
  {
1858
- "title": "Container Type Attribute",
1859
- "description": "Container type attribute (optional)",
2046
+ "title": "Pick-up Date Attribute",
2047
+ "description": "Pick-up date attribute with Unix timestamp",
1860
2048
  "type": "object",
1861
2049
  "properties": {
1862
2050
  "trait_type": {
1863
2051
  "type": "string",
1864
- "const": "Container Type"
2052
+ "const": "Pick-up Date"
1865
2053
  },
1866
2054
  "value": {
1867
- "title": "Container Type",
1868
- "description": "Type of container used for waste storage or transport",
2055
+ "title": "Pick-up Date",
2056
+ "description": "Unix timestamp in milliseconds when the waste was picked up from the source",
1869
2057
  "examples": [
1870
- "Truck",
1871
- "Dumpster",
1872
- "Roll-off Container",
1873
- "Compactor",
1874
- "Bin"
2058
+ 1733396567000
1875
2059
  ],
1876
- "type": "string",
1877
- "minLength": 1,
1878
- "maxLength": 100
2060
+ "type": "integer",
2061
+ "exclusiveMinimum": 0,
2062
+ "maximum": 9007199254740991
1879
2063
  },
1880
2064
  "display_type": {
1881
- "title": "Display Type",
1882
- "description": "How the trait should be displayed in marketplace UIs",
1883
2065
  "type": "string",
1884
- "enum": [
1885
- "number",
1886
- "date",
1887
- "boost_number",
1888
- "boost_percentage"
1889
- ]
2066
+ "const": "date"
1890
2067
  },
1891
2068
  "max_value": {
1892
2069
  "title": "Max Value",
@@ -1902,26 +2079,25 @@
1902
2079
  },
1903
2080
  "required": [
1904
2081
  "trait_type",
1905
- "value"
2082
+ "value",
2083
+ "display_type"
1906
2084
  ],
1907
2085
  "additionalProperties": false
1908
2086
  },
1909
2087
  {
1910
- "title": "Pick-up Date Attribute",
1911
- "description": "Pick-up date attribute with Unix timestamp",
2088
+ "title": "Drop-off Date Attribute",
2089
+ "description": "Drop-off date attribute with Unix timestamp",
1912
2090
  "type": "object",
1913
2091
  "properties": {
1914
2092
  "trait_type": {
1915
2093
  "type": "string",
1916
- "const": "Pick-up Date"
2094
+ "const": "Drop-off Date"
1917
2095
  },
1918
2096
  "value": {
1919
- "title": "Pick-up Date",
1920
- "description": "Unix timestamp in milliseconds when the waste was picked up from the source",
2097
+ "title": "Drop-off Date",
2098
+ "description": "Unix timestamp in milliseconds when the waste was dropped off at the destination",
1921
2099
  "examples": [
1922
- 1710518400000,
1923
- 1704067200000,
1924
- 1715270400000
2100
+ 1733407367000
1925
2101
  ],
1926
2102
  "type": "integer",
1927
2103
  "exclusiveMinimum": 0,
@@ -1963,9 +2139,7 @@
1963
2139
  "title": "Recycling Date",
1964
2140
  "description": "Unix timestamp in milliseconds when the waste was recycled/processed",
1965
2141
  "examples": [
1966
- 1710604800000,
1967
- 1704153600000,
1968
- 1715356800000
2142
+ 1733657567000
1969
2143
  ],
1970
2144
  "type": "integer",
1971
2145
  "exclusiveMinimum": 0,