forked from uncefact/tests-untp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp-config.json
2853 lines (2852 loc) · 361 KB
/
app-config.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"name": "ACRS",
"styles": {
"primaryColor": "rgb(255, 207, 7)",
"secondaryColor": "black",
"tertiaryColor": "black"
},
"generalFeatures": [
{
"name": "General features",
"type": "",
"styles": {
"primaryColor": "rgb(255, 207, 7)",
"secondaryColor": "black",
"tertiaryColor": "black"
},
"features": []
}
],
"apps": [
{
"name": "Top Line Steel",
"type": "producer",
"assets": {
"logo": "https://storage.googleapis.com/acrs-assets/logos/Top-Line-Steel-Logo.jpg",
"brandTitle": "Top Line Steel",
"passportVC": "",
"transactionEventVC": ""
},
"styles": {
"primaryColor": "#b22166",
"secondaryColor": "#391561",
"tertiaryColor": "#ffffff"
},
"features": [
{
"name": "Issue DPP",
"id": "produce_product",
"components": [
{
"name": "JsonForm",
"type": "EntryData",
"props": {
"schema": {
"type": "object",
"additionalProperties": false,
"properties": {
"productIdentifier": {
"type": "array",
"items": {
"$ref": "#/$defs/Identifier"
},
"description": "An array of unique identifiers assigned to the product or model. "
},
"batchIdentifier": {
"type": "array",
"items": {
"$ref": "#/$defs/Identifier"
},
"description": "Information regarding the specific production batch of the product."
},
"itemIdentifier": {
"type": "array",
"items": {
"$ref": "#/$defs/Identifier"
},
"description": "An array of identifiers representing a specific serialised item of the product."
},
"classification": {
"type": "array",
"items": {
"$ref": "#/$defs/Classification"
},
"description": "A code representing the product's class, typically using the UN CPC (United Nations Central Product Classification) https://unstats.un.org/unsd/classifications/Econ/cpc"
},
"modelName": {
"type": "string",
"description": "The model name or number of the product, represented as text."
},
"image": {
"$ref": "#/$defs/BinaryFile",
"description": "A unique identifier (URI) pointing to an image of the product."
},
"description": {
"type": "string",
"description": "A textual description providing details about the product."
},
"furtherInformation": {
"type": "string",
"format": "uri",
"description": "A URL pointing to further human readable information about the product."
},
"manufacturedDate": {
"type": "string",
"format": "date",
"description": "The ISO 8601 date on which the product batch was manufactured."
},
"dimension": {
"$ref": "#/$defs/Dimension",
"description": "The physical dimensions of the product. Not every dimension is relevant to every products. For example bulk materials may have wieght and volume but not length, with, or height."
},
"characteristic": {
"$ref": "#/$defs/Characteristic",
"description": ""
},
"manufacturer": {
"$ref": "#/$defs/Party",
"description": "The Party entity that manufactured the product."
},
"manufacturedAt": {
"$ref": "#/$defs/Facility",
"description": "The Facility where the product batch was manufactured."
},
"materialsProvenance": {
"type": "array",
"items": {
"$ref": "#/$defs/Material"
},
"description": "An array of Provenance objects providing details on the origin and mass fraction of components or ingredients of the product batch."
},
"conformityClaim": {
"type": "array",
"items": {
"$ref": "#/$defs/Claim"
},
"description": "An array of claim objects representing various product conformity claims about the product / batch. These can be sustainability claims, circularity claims, or any other claim type within the conformity topic list."
},
"recyclingInstruction": {
"type": "string",
"format": "uri",
"description": "A URI pointing to information regarding the recycling aspects of the product."
},
"traceabilityInformation": {
"type": "array",
"items": {
"$ref": "#/$defs/TraceabilityEvent"
},
"description": "An array of TraceabilityEvent objects detailing EPCIS events related to the traceability of the product batch."
}
},
"description": "The ProductInformation class encapsulates detailed information regarding a specific product, including its identification details, manufacturer, and other pertinent details.",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$defs": {
"Product": {
"type": "object",
"additionalProperties": false,
"properties": {
"productIdentifier": {
"type": "array",
"items": {
"$ref": "#/$defs/Identifier"
},
"description": "An array of unique identifiers assigned to the product or model. "
},
"batchIdentifier": {
"type": "array",
"items": {
"$ref": "#/$defs/Identifier"
},
"description": "Information regarding the specific production batch of the product."
},
"itemIdentifier": {
"type": "array",
"items": {
"$ref": "#/$defs/Identifier"
},
"description": "An array of identifiers representing a specific serialised item of the product."
},
"classification": {
"type": "array",
"items": {
"$ref": "#/$defs/Classification"
},
"description": "A code representing the product's class, typically using the UN CPC (United Nations Central Product Classification) https://unstats.un.org/unsd/classifications/Econ/cpc"
},
"modelName": {
"type": "string",
"description": "The model name or number of the product, represented as text."
},
"image": {
"$ref": "#/$defs/BinaryFile",
"description": "A unique identifier (URI) pointing to an image of the product."
},
"description": {
"type": "string",
"description": "A textual description providing details about the product."
},
"furtherInformation": {
"type": "string",
"format": "uri",
"description": "A URL pointing to further human readable information about the product."
},
"manufacturedDate": {
"type": "string",
"format": "date",
"description": "The ISO 8601 date on which the product batch was manufactured."
},
"dimension": {
"$ref": "#/$defs/Dimension",
"description": "The physical dimensions of the product. Not every dimension is relevant to every products. For example bulk materials may have wieght and volume but not length, with, or height."
},
"characteristic": {
"$ref": "#/$defs/Characteristic",
"description": ""
},
"manufacturer": {
"$ref": "#/$defs/Party",
"description": "The Party entity that manufactured the product."
},
"manufacturedAt": {
"$ref": "#/$defs/Facility",
"description": "The Facility where the product batch was manufactured."
},
"materialsProvenance": {
"type": "array",
"items": {
"$ref": "#/$defs/Material"
},
"description": "An array of Provenance objects providing details on the origin and mass fraction of components or ingredients of the product batch."
},
"conformityClaim": {
"type": "array",
"items": {
"$ref": "#/$defs/Claim"
},
"description": "An array of claim objects representing various product conformity claims about the product / batch. These can be sustainability claims, circularity claims, or any other claim type within the conformity topic list."
},
"recyclingInstruction": {
"type": "string",
"format": "uri",
"description": "A URI pointing to information regarding the recycling aspects of the product."
},
"traceabilityInformation": {
"type": "array",
"items": {
"$ref": "#/$defs/TraceabilityEvent"
},
"description": "An array of TraceabilityEvent objects detailing EPCIS events related to the traceability of the product batch."
}
},
"description": "The ProductInformation class encapsulates detailed information regarding a specific product, including its identification details, manufacturer, and other pertinent details."
},
"Identifier": {
"type": "object",
"additionalProperties": false,
"properties": {
"scheme": {
"type": "string",
"format": "uri",
"description": "the identifier scheme as defined by the registrar that manages the identifier registry. If the identifier scheme is registered with UNTP then this URI can use used to dicsover the resolution method (to get more data) and the verification method (to prove ownership)."
},
"identifierValue": {
"type": "string",
"description": "The value of the identifier within the scheme"
},
"binding": {
"$ref": "#/$defs/Evidence",
"description": "Link to evidence that attests to the validity and ownership of the identifer. "
}
},
"description": "An identifier of a party, product, or facility that is defined by an identifier scheme and idenfier value and, optinally, verification evidence "
},
"Evidence": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"enum": ["w3c_vc", "iso_mdl", "document", "website", "other"],
"example": "w3c_vc",
"description": "Format of the evidence (verifiable credential, document, website, etc)"
},
"assuranceLevel": {
"type": "string",
"enum": ["Self", "Commercial", "Buyer", "Membership", "Unspecified", "3rdParty"],
"example": "Self",
"description": "The assurance level of the evidence (self declaration, 2nd party, 3rd party, accredited auditor)"
},
"reference": {
"type": "string",
"format": "uri",
"description": "The URL at which the evidence data can be found. "
}
},
"description": "Evidence to support a conformity or identity claim. "
},
"Classification": {
"type": "object",
"additionalProperties": false,
"properties": {
"scheme": {
"type": "string",
"format": "uri",
"description": "Classification scheme - eg https://unstats.un.org/unsd/classifications/Econ/cpc "
},
"classifierValue": {
"type": "string",
"description": "classifier value within the scheme - eg \"01211\" in UN CPC"
},
"classifierName": {
"type": "string",
"description": "Name of the classifier - eg \"Asparagus\" for code \"01211\" in UNCPC"
},
"classifierURL": {
"type": "string",
"format": "uri",
"description": "Linked data URL to a web vocabulary entery for this classificaiton code. When this property is provided, the scheme, value, and name properties of the classifer are not required. eg https://vocabulary.uncefact.org/unlocode#AUBNE represensign the port of Brisbane in the UN/LOCODE classification scheme."
}
},
"description": "A classification scheme and code / name representing a category value for a product, entity, or facility."
},
"BinaryFile": {
"type": "object",
"additionalProperties": false,
"properties": {
"fileHash": {
"x-jargon-isKey": true,
"type": "string",
"description": "The MD5 hash of the file."
},
"fileLocation": {
"type": "string",
"format": "uri",
"description": "The location of the evidence file."
},
"fileType": {
"type": "string",
"x-external-enumeration": "https://mimetype.io/all-types",
"description": "The type of file, represented as a MIME type.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://mimetype.io/all-types\n "
}
},
"description": "A file representing a data snapshot that is used to infomr the conformity assessment."
},
"Dimension": {
"type": "object",
"additionalProperties": false,
"properties": {
"weight": {
"$ref": "#/$defs/Measure",
"description": "the weight of the product"
},
"length": {
"$ref": "#/$defs/Measure",
"description": "The length of the product or packaging"
},
"width": {
"$ref": "#/$defs/Measure",
"description": "The width of the product or packaging"
},
"height": {
"$ref": "#/$defs/Measure",
"description": "The height of the product or packaging"
},
"volume": {
"$ref": "#/$defs/Measure",
"description": "The displacement volume of the product."
}
},
"description": "Overall (length, width, height) dimensions and weight/volume of an item."
},
"Measure": {
"type": "object",
"additionalProperties": false,
"properties": {
"value": {
"type": "number",
"description": "The numeric value of the measure"
},
"unit": {
"type": "string",
"x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode",
"description": "Unit of measure drawn from the UNECE rec20 measure code list.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/UnitMeasureCode\n "
}
},
"description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG)."
},
"Characteristic": {
"type": "object",
"additionalProperties": false,
"properties": {},
"description": "Product specific characteristics. This class is an extension point for industry specific product characteristics or performance information such as clothing size or battery capacity."
},
"Party": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"description": "The decentralised identifier of the party - must be a W3C DID."
},
"name": {
"type": "string",
"description": "The name of the organization or company, represented as a text string."
},
"identifiers": {
"type": "array",
"items": {
"$ref": "#/$defs/Identifier"
},
"description": "A list of unique business identifiers assigned to the party - such as tax registration numbers."
}
},
"description": "The Party class represents an entity such as an organization, or a company that manufactured the product."
},
"Facility": {
"type": "object",
"additionalProperties": false,
"properties": {
"identifier": {
"type": "array",
"items": {
"$ref": "#/$defs/Identifier"
},
"description": "A unique identifier (URI) assigned to the facility. (Link Resolver - GS1 GLN?)"
},
"name": {
"type": "string",
"description": "The name of the facility, represented as a text string."
},
"location": {
"type": "string",
"format": "uri",
"description": ""
},
"operatedBy": {
"$ref": "#/$defs/Party",
"description": "The Party entity responsible for operating the facility."
}
},
"description": "The physical site (eg farm or factory) where the product or materials was produced."
},
"Material": {
"type": "object",
"additionalProperties": false,
"properties": {
"originCountry": {
"type": "string",
"x-external-enumeration": "https://vocabulary.uncefact.org/CountryId",
"description": "A ISO 3166-1 code representing the country of origin of the component or ingredient.\n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://vocabulary.uncefact.org/CountryId\n "
},
"materialType": {
"$ref": "#/$defs/Classification",
"description": "The type of this material - as a value drawn from a controlled vocabulary eg textileexchange.org/materials/rm01014 - representing organic cotton."
},
"massFraction": {
"type": "number",
"description": "A numeric value representing the mass fraction of the product represented by this material. The sum of all mass fraction values for a given passport should be 100."
},
"recycled": {
"type": "boolean",
"description": "Indicator is true if this material input is from a recycled source."
},
"hazardous": {
"type": "boolean",
"description": "Indicates whether this material is hazardous. If true then "
}
},
"description": "The material class encapsulates details about the origin or source of raw materials in a product, including the country of origin and the mass fraction."
},
"Claim": {
"type": "object",
"additionalProperties": false,
"properties": {
"topic": {
"type": "string",
"enum": [
"environment.energy",
"environment.emissions",
"environment.water",
"environment.waste",
"environment.deforestation",
"environment.biodiversity",
"circularity.content",
"circularity.design",
"social.labour",
"social.rights",
"social.community",
"social.safety",
"governance.ethics",
"governance.compliance",
"governance.transparency"
],
"example": "environment.energy",
"description": "A code representing the topic of the sustainability claim. E.g. environment.deforestation, environment.ghg-emission-intensity, etc.. Drawn from a standard code list. "
},
"standardOrRegulation": {
"type": "string",
"format": "uri",
"description": "The standard or regulation against which this conformity claim is made. Expressed as a URI and should match a value in the UN catalogue of reference vocabularies. "
},
"criteriaReference": {
"type": "string",
"format": "uri",
"description": "A URI pointing to the specific criteria within the standard or regulation against which this claim is made."
},
"claimedValues": {
"type": "array",
"items": {
"$ref": "#/$defs/Metric"
},
"description": "One or more actual measures supporting the claim. For example for GHG emissions there may be a metric for total emissions intensity and also a metric for amount of offsets included."
},
"benchmarkValue": {
"$ref": "#/$defs/Metric",
"description": "A benchmark value against which the claimed value can be assessed. THis could be a value specified by a standard or regulation or could be an industry benchmark."
},
"benchmarkReference": {
"type": "string",
"format": "uri",
"description": "A refernce to evidence to support the benchmark value."
},
"conformance": {
"type": "boolean",
"description": "and indicator (boolean) that expresses whether or not this product has achieved compliance against the criteria. for example, if the topic is environment.deforstation and the criteria is EU.2023.1115 then the product is conformant if it has not touched any facility throughout it's lifecycle that is not deforestation free since dec 2020."
},
"conformityEvidence": {
"$ref": "#/$defs/Evidence",
"description": "A URI pointing to the evidence supporting the claim. Most likely in the form of a verifiable credential."
}
},
"description": "The SustainabilityClaim class represents specific claims regarding the sustainability of a product, providing details about the metrics, thresholds, and evidences supporting the claim."
},
"Metric": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "A human readable name for this metric"
},
"value": {
"$ref": "#/$defs/Measure",
"description": "A numeric value representing the measurement or evaluation outcome for the claim."
},
"accuracy": {
"type": "number",
"description": "A percentage represented as a numeric between 0 and 1 indicating the rage of accuracy of the claimed value (eg 0.05 means that the actual value is within 5% of the claimed value.)"
}
},
"description": "A specific measure of performance against the criteria that governs the claim. Expressed as an array of metric (ie unit of emasure) / value (ie the actual numeric value) pairs. "
},
"TraceabilityEvent": {
"type": "object",
"additionalProperties": false,
"properties": {
"eventReference": {
"type": "string",
"format": "uri",
"description": "A URI pointing to the detailed information about the EPCIS event. Most likely in the form of a verifiable credential."
},
"eventType": {
"type": "string",
"enum": ["aggregation", "transformation", "object", "transaction", "association"],
"example": "aggregation",
"description": "A code representing the type of EPCIS event. ObjectEvent, AggregationEvent, TransactionEvent, TransformationEvent, ObjectEvent."
}
},
"description": "The TraceabilityEvent class represents a specific EPCIS event in the traceability chain of a product, including details about the event type and reference."
}
}
},
"data": {
"productIdentifier": [
{
"scheme": "https://identifier.example.org/steel",
"identifierValue": "STEEL-12345",
"binding": {
"type": "document",
"assuranceLevel": "3rdParty",
"reference": "https://identifier.example.org/steel/12345/binding"
}
}
],
"batchIdentifier": [
{
"scheme": "https://batch.example.org",
"identifierValue": "BATCH-67890",
"binding": {
"type": "document",
"assuranceLevel": "3rdParty",
"reference": "https://batch.example.org/67890/binding"
}
}
],
"itemIdentifier": [
{
"scheme": "https://item.example.org",
"identifierValue": "ITEM-112233",
"binding": {
"type": "document",
"assuranceLevel": "3rdParty",
"reference": "https://item.example.org/112233/binding"
}
}
],
"classification": [
{
"scheme": "https://unstats.un.org/unsd/classifications/Econ/cpc",
"classifierValue": "41231",
"classifierName": "Steel Rods",
"classifierURL": "https://vocabulary.uncefact.org/unlocode#AUSYD"
}
],
"modelName": "Steel Model X",
"image": "data:image/webp;base64,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",
"description": "High-quality steel rods for construction.",
"furtherInformation": "https://example.org/products/steel_model_x",
"manufacturedDate": "2024-05-20",
"dimension": {
"weight": { "value": 1500, "unit": "KG" },
"length": { "value": 6, "unit": "MTR" },
"width": { "value": 0.1, "unit": "MTR" },
"height": { "value": 0.1, "unit": "MTR" },
"volume": { "value": 0.6, "unit": "CMT" }
},
"characteristic": {},
"manufacturer": {
"id": "did:example:123456789abcdefghi",
"name": "Steel Manufacturer Inc.",
"identifiers": [
{
"scheme": "https://identifier.example.org/company",
"identifierValue": "COMP-56789",
"binding": {
"type": "document",
"assuranceLevel": "3rdParty",
"reference": "https://identifier.example.org/company/56789/binding"
}
}
]
},
"manufacturedAt": {
"identifier": [
{
"scheme": "https://identifier.example.org/facility",
"identifierValue": "FAC-1234",
"binding": {
"type": "document",
"assuranceLevel": "3rdParty",
"reference": "https://identifier.example.org/facility/1234/binding"
}
}
],
"name": "Main Steel Plant",
"location": "https://example.org/locations/main_steel_plant",
"operatedBy": {
"id": "did:example:567890abcdefghi",
"name": "Steel Manufacturer Inc.",
"identifiers": [
{
"scheme": "https://identifier.example.org/company",
"identifierValue": "COMP-56789",
"binding": {
"type": "document",
"assuranceLevel": "3rdParty",
"reference": "https://identifier.example.org/company/56789/binding"
}
}
]
}
},
"materialsProvenance": [
{
"originCountry": "CN",
"materialType": {
"scheme": "https://textileexchange.org/materials",
"classifierValue": "STEEL",
"classifierName": "Carbon Steel"
},
"massFraction": 100,
"recycled": false,
"hazardous": false
}
],
"conformityClaim": [
{
"topic": "environment.emissions",
"standardOrRegulation": "https://example.org/standards/environment",
"criteriaReference": "https://example.org/standards/environment/criteria",
"claimedValues": [
{ "name": "GHG Emissions", "value": { "value": 50, "unit": "KG_CO2E" }, "accuracy": 0.98 }
],
"benchmarkValue": { "name": "Industry Benchmark", "value": { "value": 60, "unit": "KG_CO2E" } },
"benchmarkReference": "https://example.org/benchmarks/environment",
"conformance": true,
"conformityEvidence": {
"type": "w3c_vc",
"assuranceLevel": "3rdParty",
"reference": "https://acrs.pyx.io/verify?q=%7B%22payload%22%3A%7B%22uri%22%3A%22https%3A%2F%2Fstorage.googleapis.com%2Fverifiable-credentials%2Fconformity-credentials%2Facrs-conformity-credential.json%22%7D%7D"
}
}
],
"recyclingInstruction": "https://example.org/recycling/steel_model_x"
},
"className": "json-form",
"style": {
"margin": "40px auto",
"paddingTop": "40px",
"width": "80%"
}
}
},
{
"name": "CustomButton",
"type": "Submit",
"props": {}
}
],
"services": [
{
"name": "processDPP",
"parameters": [
{
"vckit": {
"vckitAPIUrl": "http://localhost:3332/v1",
"issuer": "did:web:example.com"
},
"dpp": {
"context": ["https://dpp-json-ld.s3.ap-southeast-2.amazonaws.com/dppld.json"],
"renderTemplate": [
{
"template": "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><link href=\"https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap\" rel=\"stylesheet\"><title>Digital Product Passport</title><style>*{margin:0;padding:0;box-sizing:border-box}body{font-family:\"Source Sans 3\",sans-serif}.container{text-align:initial;min-width:290px;max-width:390px;margin:0 auto;display:flex;flex-direction:column;gap:32px}.header{background:#edeff0}.header-image{position:relative;background-image:linear-gradient(to right bottom,rgba(0,0,0,.15),rgba(0,0,0,.5)),url({{{credentialSubject.image}}});background-size:cover;background-position:center;min-height:215px}.header-image-top-left{position:absolute;top:25px;left:15px;font-weight:500;font-size:16px;line-height:22px;color:#fff}.header-image-bottom-left{position:absolute;bottom:18px;left:15px;color:#fff}.header-image-bottom-left h1{font-size:28px;font-weight:700;line-height:32.5px;word-break:break-word}.header-batch{padding:12px 16px 16px 16px;word-break:break-word;display:flex;padding:12px 16px 16px 16px;align-items:flex-start;align-content:flex-start;gap:12px;align-self:stretch;flex-wrap:wrap}.header-batch-item{display:flex;align-items:center;gap:6px}.header-batch a{padding:0 2px;font-size:14px;font-weight:600;line-height:15.25px;color:#232e3d}.passport{display:flex;flex-direction:column;gap:24px}.passport-header{display:flex;justify-content:space-between;align-items:center}.passport-box{display:grid;grid-template-columns:1fr 1fr;justify-items:center;column-gap:10px}.passport-box-item{padding:12px 16px 12px 16px;border-radius:8px;min-height:90px;background-color:#006eb5;color:#fff}.passport-box-item h3{font-size:16px;font-weight:300;line-height:18.29px}.passport-box-item p{margin-top:8px;font-size:40px;font-weight:800;line-height:43.33px;word-break:break-word}.passport-issued-by{display:flex;flex-direction:column;gap:16px}.passport-issued-by-header p{font-size:14px;font-weight:400;line-height:15.26px;color:#55606e}.passport-issued-by-header h3{margin-top:2px;font-size:20px;font-weight:600;line-height:21.8px}.passport-info{display:flex;flex-direction:column}.passport-info-item{padding:10px 0 12px 0;min-height:39px;border-bottom:1px solid #d4d6d8;word-break:break-word;display:grid;grid-template-columns:130px 1fr;column-gap:8px}.passport-info-item:first-child>a{text-decoration:none}.passport-info-item-title{font-size:16px;font-weight:400;line-height:17.44px;color:#55606e}.passport-info-item a{font-size:16px;font-weight:500;line-height:17.44px;color:#232e3d;text-decoration-color:#4f95dd;text-decoration-thickness:2px;text-underline-offset:2px}.passport-info-item-vc a{display:block;margin-bottom:8px}section{padding:0 16px 0 16px}.section-title{font-size:18px;font-weight:700;line-height:19.62px;color:#000}.section-description{margin-top:12px;font-size:16px;line-height:18.88px;color:#000;font-weight:400}.esg-claims-box{margin-top:16px}.conformity-box{border:1px solid #d4d6d8;border-radius:4px;padding:16px 18px 16px 18px}.conformity-box-title{font-size:16px;font-weight:600;line-height:17.44px;color:#000}.conformity-box-description{font-size:14px;font-weight:400;line-height:19.25px;color:#55606e;margin-top:4px}.conformity-claimed-benchmark{margin-top:8px;display:grid;grid-template-columns:1fr 1fr;column-gap:4px}.conformity-claimed-title{font-size:16px;font-weight:600;line-height:17.44px;color:#000;word-break:break-word}.conformity-claimed-description{font-size:14px;font-weight:500;line-height:19.25px;color:#55606e}.conformity-vc-details{margin-top:8px;display:grid;grid-template-columns:1.5fr 1fr}.conformity-vc-details a{grid-column:2}.conformity-vc{border-radius:8px;background-color:#b8ecb6;width:auto;display:flex;justify-content:space-between;align-items:center}.conformity-text{font-size:13px;font-weight:600;line-height:15.26px;color:#000;margin-left:8px}.conformity-vc .icon{margin-right:4px}.conformity-view-details,.conformity-view-details:link{justify-self:end;font-size:14px;font-weight:600;line-height:19.25px;cursor:pointer;color:#000;text-decoration:none;display:flex;align-items:center;gap:10px}.composition-box{display:flex;flex-direction:column;gap:8px;margin-top:12px}.composition-box-item{border:1px solid #d4d6d8;border-radius:4px;min-height:103px;padding:16px 18px 16px 16px;display:flex;justify-content:space-between}.composition-percent{font-size:16px;font-weight:500;line-height:21.92px;color:#000}.composition-id{font-size:14px;font-weight:400;line-height:19.25px;color:#55606e}.composition-title{font-size:16px;font-weight:600;line-height:17.44px;color:#000}.composition-tag{display:flex}.composition-tag-item{font-size:14px;font-weight:400;line-height:19.25px;color:#000;background-color:#edeff0;padding:2px 4px 2px 4px;margin-right:4px}.composition-box-first-column{display:flex;gap:20px;word-break:break-word}.composition-box-second-column{word-break:break-word;display:flex;flex-direction:column;gap:6px}.composition-box-third-column{cursor:pointer;text-decoration:none;display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.traceability{display:flex;flex-direction:column;gap:12px}.traceability-event-item{height:39px;border-bottom:1px solid #d4d6d8;padding:10px 0 12px 0;display:flex;justify-content:space-between}.traceability-event-item span{font-size:16px;font-weight:400;line-height:17.44px;color:#000}.traceability-event-item a{font-size:16px;font-weight:500;line-height:17.44px;color:#232e3d;text-decoration-color:#4f95dd;text-decoration-thickness:2px}.product-info{margin-top:15px;display:flex;flex-direction:column;gap:10px}.product-info-item{display:grid;grid-template-columns:1fr 2.5fr;column-gap:16px;padding:3px 0 5px 0;min-height:39px;border-bottom:1px solid #d4d6d8}.product-info-item span{font-size:16px;font-weight:400;line-height:17.44px;color:#55606e}.product-info-item p{font-size:16px;font-weight:500;line-height:17.44px;color:#232e3d;margin-bottom:12px;word-break:break-word}.tag{border-radius:8px;max-width:100%;width:fit-content;display:flex;align-items:center}.vc-tag-text{font-size:13px;font-weight:600;line-height:15.26px;color:#000;margin:4px 10px 4px 8px}.vc-tag{background-color:#b8ecb6}.other-evidence-tag{background-color:#b5d5f5}.icon{margin:4px 8px 4px 0;width:22px;height:22px;display:inline-block}.country-code{font-size:16px;font-weight:400;line-height:19.25px;color:#55606e}.blue-bottom-line,.blue-bottom-line:link,.blue-bottom-line:link:visited{text-decoration-color:#4f95dd;text-decoration-thickness:2px;text-underline-offset:3px}footer{height:60px}</style></head><body><div class=\"container\"><header><div class=\"header\"><div class=\"header-image\"><p class=\"header-image-top-left\">PRODUCT PASSPORT</p><div class=\"header-image-bottom-left\"><h1>{{credentialSubject.modelName}}</h1></div></div><div class=\"header-batch\">{{#each credentialSubject.batchIdentifier}}<div class=\"header-batch-item\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.45 3.5C2.17152 3.5 1.90445 3.38938 1.70754 3.19246C1.51062 2.99555 1.4 2.72848 1.4 2.45C1.4 2.17152 1.51062 1.90445 1.70754 1.70754C1.90445 1.51062 2.17152 1.4 2.45 1.4C2.72848 1.4 2.99555 1.51062 3.19246 1.70754C3.38938 1.90445 3.5 2.17152 3.5 2.45C3.5 2.72848 3.38938 2.99555 3.19246 3.19246C2.99555 3.38938 2.72848 3.5 2.45 3.5ZM13.587 6.706L7.287 0.406C7.035 0.154 6.685 0 6.3 0H1.4C0.623 0 0 0.623 0 1.4V6.3C0 6.685 0.154 7.035 0.413 7.287L6.706 13.587C6.965 13.839 7.315 14 7.7 14C8.085 14 8.435 13.839 8.687 13.587L13.587 8.687C13.846 8.435 14 8.085 14 7.7C14 7.308 13.839 6.958 13.587 6.706Z\" fill=\"#1F5A95\"/></svg><a href=\"{{binding.reference}}\" class=\"blue-bottom-line\">Batch: {{identifierValue}}</a></div>{{/each}} {{#each credentialSubject.productIdentifier}}<div class=\"header-batch-item\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.45 3.5C2.17152 3.5 1.90445 3.38938 1.70754 3.19246C1.51062 2.99555 1.4 2.72848 1.4 2.45C1.4 2.17152 1.51062 1.90445 1.70754 1.70754C1.90445 1.51062 2.17152 1.4 2.45 1.4C2.72848 1.4 2.99555 1.51062 3.19246 1.70754C3.38938 1.90445 3.5 2.17152 3.5 2.45C3.5 2.72848 3.38938 2.99555 3.19246 3.19246C2.99555 3.38938 2.72848 3.5 2.45 3.5ZM13.587 6.706L7.287 0.406C7.035 0.154 6.685 0 6.3 0H1.4C0.623 0 0 0.623 0 1.4V6.3C0 6.685 0.154 7.035 0.413 7.287L6.706 13.587C6.965 13.839 7.315 14 7.7 14C8.085 14 8.435 13.839 8.687 13.587L13.587 8.687C13.846 8.435 14 8.085 14 7.7C14 7.308 13.839 6.958 13.587 6.706Z\" fill=\"#1F5A95\"/></svg><a href=\"{{binding.reference}}\" class=\"blue-bottom-line\">SKU: {{identifierValue}}</a></div>{{/each}} {{#each credentialSubject.itemIdentifier}}<div class=\"header-batch-item\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.45 3.5C2.17152 3.5 1.90445 3.38938 1.70754 3.19246C1.51062 2.99555 1.4 2.72848 1.4 2.45C1.4 2.17152 1.51062 1.90445 1.70754 1.70754C1.90445 1.51062 2.17152 1.4 2.45 1.4C2.72848 1.4 2.99555 1.51062 3.19246 1.70754C3.38938 1.90445 3.5 2.17152 3.5 2.45C3.5 2.72848 3.38938 2.99555 3.19246 3.19246C2.99555 3.38938 2.72848 3.5 2.45 3.5ZM13.587 6.706L7.287 0.406C7.035 0.154 6.685 0 6.3 0H1.4C0.623 0 0 0.623 0 1.4V6.3C0 6.685 0.154 7.035 0.413 7.287L6.706 13.587C6.965 13.839 7.315 14 7.7 14C8.085 14 8.435 13.839 8.687 13.587L13.587 8.687C13.846 8.435 14 8.085 14 7.7C14 7.308 13.839 6.958 13.587 6.706Z\" fill=\"#1F5A95\"/></svg><a href=\"{{binding.reference}}\" class=\"blue-bottom-line\">GTIN: {{identifierValue}}</a></div>{{/each}}</div></div></header><section class=\"passport\"><div class=\"passport-box\"><div class=\"passport-box-item\"><h3>Sustainability</h3><p>100%</p></div><div class=\"passport-box-item\"><h3>Confidence</h3><p>100%</p></div></div><div class=\"passport-issued-by\"><div class=\"passport-issued-by-header\"><p>PASSPORT ISSUED BY</p><h3>{{issuer.name}}</h3></div><div class=\"passport-info\"><div class=\"passport-info-item\"><div class=\"passport-info-item-title\">Industry</div><a href=\"#\">Unknown</a></div><div class=\"passport-info-item\"><div class=\"passport-info-item-title\">Business identifier</div><a href=\"{{issuer.identifiers.0.scheme}}\">{{issuer.identifiers.0.identifierValue}}</a></div><div class=\"passport-info-item\"><div class=\"passport-info-item-title\">Location</div><a href=\"{{credentialSubject.manufacturedAt.location}}\">Unknown</a></div><div class=\"passport-info-item\"><div class=\"passport-info-item-title\">Identity verification</div><div class=\"passport-info-item-vc\"><a href=\"{{issuer.identifiers.0.binding.reference}}\">Unknown</a>{{!-- {{#if (eq issuer.identifiers.0.binding.type \"w3c_vc\")}} --}}<div class=\"tag vc-tag\"><div class=\"vc-tag-text\">Verifiable credential</div><div class=\"icon\"><svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_134_619)\"><path d=\"M4.23077 22C3.2906 22 2.49145 21.6792 1.83333 21.0375C1.17521 20.3958 0.846153 19.6167 0.846153 18.7V15.4H4.23077V0L5.92308 1.65L7.61538 0L9.30769 1.65L11 0L12.6923 1.65L14.3846 0L16.0769 1.65L17.7692 0L19.4615 1.65L21.1538 0V18.7C21.1538 19.6167 20.8248 20.3958 20.1667 21.0375C19.5085 21.6792 18.7094 22 17.7692 22H4.23077ZM17.7692 19.8C18.0889 19.8 18.357 19.6944 18.5736 19.4832C18.7903 19.272 18.8982 19.0109 18.8974 18.7V3.3H6.48718V15.4H16.641V18.7C16.641 19.0117 16.7493 19.2731 16.9659 19.4843C17.1826 19.6955 17.4503 19.8007 17.7692 19.8ZM7.61538 7.7V5.5H14.3846V7.7H7.61538ZM7.61538 11V8.8H14.3846V11H7.61538ZM16.641 7.7C16.3214 7.7 16.0536 7.5944 15.8377 7.3832C15.6219 7.172 15.5136 6.91093 15.5128 6.6C15.5121 6.28907 15.6204 6.028 15.8377 5.8168C16.0551 5.6056 16.3229 5.5 16.641 5.5C16.9592 5.5 17.2273 5.6056 17.4454 5.8168C17.6636 6.028 17.7715 6.28907 17.7692 6.6C17.767 6.91093 17.6587 7.17237 17.4443 7.3843C17.2299 7.59623 16.9622 7.70147 16.641 7.7ZM16.641 11C16.3214 11 16.0536 10.8944 15.8377 10.6832C15.6219 10.472 15.5136 10.2109 15.5128 9.9C15.5121 9.58907 15.6204 9.328 15.8377 9.1168C16.0551 8.9056 16.3229 8.8 16.641 8.8C16.9592 8.8 17.2273 8.9056 17.4454 9.1168C17.6636 9.328 17.7715 9.58907 17.7692 9.9C17.767 10.2109 17.6587 10.4724 17.4443 10.6843C17.2299 10.8962 16.9622 11.0015 16.641 11ZM4.23077 19.8H14.3846V17.6H3.10256V18.7C3.10256 19.0117 3.21087 19.2731 3.42749 19.4843C3.6441 19.6955 3.91186 19.8007 4.23077 19.8Z\" fill=\"#232E3D\"/></g><defs><clipPath id=\"clip0_134_619\"><rect width=\"22\" height=\"22\" fill=\"white\"/></clipPath></defs></svg></div></div>{{!-- {{/if}} --}}</div></div></div></div></section><section class=\"conformity\"><div><p class=\"section-title\">ESG Claims</p><p class=\"section-description\">Conformity credentials are usually issued by independent third parties and provide a trusted assessment of product ESG performance against credible standards or regulations</p></div>{{#each credentialSubject.conformityClaim}}<div class=\"esg-claims-box\"><div class=\"conformity-box\"><p class=\"conformity-box-title\">{{topic}}</p><div class=\"conformity-claimed-benchmark\"><div><div class=\"conformity-claimed-title\">{{claimedValues.0.value.value}}% per {{claimedValues.0.value.unit}}</div><div class=\"conformity-claimed-description\">Claimed</div></div><div><div class=\"conformity-claimed-title\">{{benchmarkValue.value.value}}% per {{benchmarkValue.value.unit}}</div><div class=\"conformity-claimed-description\">Benchmark</div></div></div><div class=\"conformity-vc-details\">{{!-- {{#if (eq conformityEvidence.type \"w3c_vc\")}} --}}<div class=\"tag vc-tag\"><div class=\"vc-tag-text\">Verifiable credential</div><div class=\"icon\"><svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_134_619)\"><path d=\"M4.23077 22C3.2906 22 2.49145 21.6792 1.83333 21.0375C1.17521 20.3958 0.846153 19.6167 0.846153 18.7V15.4H4.23077V0L5.92308 1.65L7.61538 0L9.30769 1.65L11 0L12.6923 1.65L14.3846 0L16.0769 1.65L17.7692 0L19.4615 1.65L21.1538 0V18.7C21.1538 19.6167 20.8248 20.3958 20.1667 21.0375C19.5085 21.6792 18.7094 22 17.7692 22H4.23077ZM17.7692 19.8C18.0889 19.8 18.357 19.6944 18.5736 19.4832C18.7903 19.272 18.8982 19.0109 18.8974 18.7V3.3H6.48718V15.4H16.641V18.7C16.641 19.0117 16.7493 19.2731 16.9659 19.4843C17.1826 19.6955 17.4503 19.8007 17.7692 19.8ZM7.61538 7.7V5.5H14.3846V7.7H7.61538ZM7.61538 11V8.8H14.3846V11H7.61538ZM16.641 7.7C16.3214 7.7 16.0536 7.5944 15.8377 7.3832C15.6219 7.172 15.5136 6.91093 15.5128 6.6C15.5121 6.28907 15.6204 6.028 15.8377 5.8168C16.0551 5.6056 16.3229 5.5 16.641 5.5C16.9592 5.5 17.2273 5.6056 17.4454 5.8168C17.6636 6.028 17.7715 6.28907 17.7692 6.6C17.767 6.91093 17.6587 7.17237 17.4443 7.3843C17.2299 7.59623 16.9622 7.70147 16.641 7.7ZM16.641 11C16.3214 11 16.0536 10.8944 15.8377 10.6832C15.6219 10.472 15.5136 10.2109 15.5128 9.9C15.5121 9.58907 15.6204 9.328 15.8377 9.1168C16.0551 8.9056 16.3229 8.8 16.641 8.8C16.9592 8.8 17.2273 8.9056 17.4454 9.1168C17.6636 9.328 17.7715 9.58907 17.7692 9.9C17.767 10.2109 17.6587 10.4724 17.4443 10.6843C17.2299 10.8962 16.9622 11.0015 16.641 11ZM4.23077 19.8H14.3846V17.6H3.10256V18.7C3.10256 19.0117 3.21087 19.2731 3.42749 19.4843C3.6441 19.6955 3.91186 19.8007 4.23077 19.8Z\" fill=\"#232E3D\"/></g><defs><clipPath id=\"clip0_134_619\"><rect width=\"22\" height=\"22\" fill=\"white\"/></clipPath></defs></svg></div></div>{{!-- {{/if}} --}}<a href=\"{{conformityEvidence.reference}}\" class=\"conformity-view-details\"><p>View details</p><svg width=\"10\" height=\"15\" viewBox=\"0 0 10 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1 1.5L7.66667 7.99842M7.66667 7.99842L1 14.5M7.66667 7.99842H7\" stroke=\"#4F95DD\" stroke-width=\"2\"/></svg></a></div></div></div>{{/each}}</section><section class=\"composition\"><div><p class=\"section-title\">Product composition</p><p class=\"section-description\">A complete list of materials that make up the composition of this product.</p></div><div class=\"composition-box\">{{#each credentialSubject.materialsProvenance}}<div class=\"composition-box-item\"><div class=\"composition-box-first-column\"><p class=\"composition-percent\">{{massFraction}}%</p><div class=\"composition-box-second-column\"><p class=\"composition-id\">ID {{materialType.classifierValue}}</p><p class=\"composition-title\">{{materialType.classifierName}}</p><div class=\"composition-tag\">{{#if recycled}}<p class=\"composition-tag-item\">Recycled</p>{{/if}} {{#if hazardous}}<p class=\"composition-tag-item\">Hazard</p>{{/if}}</div></div></div><a href=\"{{materialType.classifierURL}}\" class=\"composition-box-third-column\"><div class=\"country-code\">{{originCountry}}</div><svg width=\"10\" height=\"15\" viewBox=\"0 0 10 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1 1.5L7.66667 7.99842M7.66667 7.99842L1 14.5M7.66667 7.99842H7\" stroke=\"#4F95DD\" stroke-width=\"2\"/></svg></a></div>{{/each}}</div></section><section class=\"traceability\"><div><p class=\"section-title\">Traceability</p><p class=\"section-description\">Traceability events specify the “what, when, where, why and how” of the products and facilities that constitute a value chain.</p></div><div class=\"traceability-event\">{{#each credentialSubject.traceabilityInformation}}<div class=\"traceability-event-item\"><span>{{eventType}}</span><a href=\"{{eventReference}}\">View</a></div>{{/each}}</div></section><section class=\"product\"><div><h2 class=\"section-title\">Product information</h2></div><div class=\"product-info\"><div class=\"product-info-item\"><span>Manuf. Date</span><p>{{credentialSubject.manufacturedDate}}</p></div><div class=\"product-info-item\"><span>Batch No.</span><p>{{credentialSubject.batchIdentifier.0.identifierValue}}</p></div><div class=\"product-info-item\"><span>Weight</span><p>{{credentialSubject.dimension.weight.value}}{{credentialSubject.dimension.weight.unit}}</p></div><div class=\"product-info-item\"><span>Length</span><p>{{credentialSubject.dimension.length.value}}{{credentialSubject.dimension.weight.unit}}</p></div><div class=\"product-info-item\"><span>Width</span><p>{{credentialSubject.dimension.width.value}}{{credentialSubject.dimension.weight.unit}}</p></div><div class=\"product-info-item\"><span>Height</span><p>{{credentialSubject.dimension.height.value}}{{credentialSubject.dimension.weight.unit}}</p></div><div class=\"product-info-item\"><span>Description</span><p>{{credentialSubject.description}}</p></div></div></section></div><footer></footer></body></html>",
"@type": "WebRenderingTemplate2022"
}
],
"type": ["VerifiableCredential", " DigitalProductPassport"],
"dlrLinkTitle": "Steel Passport",
"dlrIdentificationKeyType": "gtin",
"dlrVerificationPage": "http://localhost:3000/verify"
},
"dlr": {
"dlrAPIUrl": "http://localhost:8080",
"dlrAPIKey": "5555555555555"
},
"storage": {
"url": "http://localhost:3001/upload",
"params": {
"resultPath": "/url"
},
"options": {
"method": "POST",
"headers": {
"Content-Type": "application/json"
}
}
},
"identifierKeyPath": "/productIdentifier/0/identifierValue"
}
]
},
{
"name": "mergeToLocalStorage",
"parameters": [
{
"storageKey": "topLineSteel_dpps",
"objectKeyPath": "/vc/credentialSubject/productIdentifier/0/identifierValue"
}
]
}
]
},
{
"name": "Sale Steel",
"id": "transaction_product",
"components": [
{
"name": "LocalStorageLoader",
"type": "EntryData",
"props": {
"storageKey": "topLineSteel_dpps",
"nestedComponents": [
{
"name": "JsonForm",
"type": "EntryData",
"props": {
"schema": {
"type": "object",
"additionalProperties": false,
"properties": {
"sourceParty": {
"$ref": "#/$defs/Party",
"description": "The source party for this supply chain transaction - typically the seller party"
},
"destinationParty": {
"$ref": "#/$defs/Party",
"description": "The destination party for this supply chain transaction - typically the buyer party."
},
"epcList": {
"type": "array",
"items": { "$ref": "#/$defs/Item" },
"description": "The list of uniquely identified trade items included in this supply chain transaction."
},
"quantityList": {
"type": "array",
"items": { "$ref": "#/$defs/QuantityElement" },
"description": "List of quantified product classes that are included in this transaction. Used when the trade items do not have unique identifiers (eg 100 reels of yarn)"
},
"referenceDocument": {
"$ref": "#/$defs/TradeDocument",
"description": "The supply chain document reference for this transaction event - eg the invoice, order, or dispatch advice"
},
"eventID": {
"x-jargon-isKey": true,
"readOnly": true,
"type": "string",
"description": "The unique identifier of this event - SHOULD be a UUID"
},
"eventTime": {
"type": "string",
"format": "date-time",
"description": "The ISO-8601 date time when the event occurred."
},
"action": {
"type": "string",
"enum": ["observe", "add", "delete"],
"example": "observe",
"description": "Code describing how an event relates to the lifecycle of the entity impacted by the event."
},
"disposition": {
"type": "string",
"x-external-enumeration": "https://ref.gs1.org/cbv/Disp",
"description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n "
},
"bizStep": {
"type": "string",
"x-external-enumeration": "https://ref.gs1.org/cbv/BizStep",
"description": "A business step code drawn from a controlled vocabulary. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n "
},
"bizLocation": {
"type": "string",
"format": "uri",
"description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data."
},
"sensorElementList": {
"type": "array",
"items": { "$ref": "#/$defs/SensorElement" },
"description": "An array (one for each sensor) of sensor device data sets associated with the event. "
}
},
"description": "Transaction represents an event in which one or more objects become associated or disassociated with one or more identified business transactions - such as the purchase / shipment of goods between buyer and seller.",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$defs": {
"TransactionEvent": {
"type": "object",
"additionalProperties": false,
"properties": {
"sourceParty": {
"$ref": "#/$defs/Party",
"description": "The source party for this supply chain transaction - typically the seller party"
},
"destinationParty": {
"$ref": "#/$defs/Party",
"description": "The destination party for this supply chain transaction - typically the buyer party."
},
"epcList": {
"type": "array",
"items": { "$ref": "#/$defs/Item" },
"description": "The list of uniquely identified trade items included in this supply chain transaction."
},
"quantityList": {
"type": "array",
"items": { "$ref": "#/$defs/QuantityElement" },
"description": "List of quantified product classes that are included in this transaction. Used when the trade items do not have unique identifiers (eg 100 reels of yarn)"
},
"referenceDocument": {
"$ref": "#/$defs/TradeDocument",
"description": "The supply chain document reference for this transaction event - eg the invoice, order, or dispatch advice"
},
"eventID": {
"x-jargon-isKey": true,
"readOnly": true,
"type": "string",
"description": "The unique identifier of this event - SHOULD be a UUID"
},
"eventTime": {
"type": "string",
"format": "date-time",
"description": "The ISO-8601 date time when the event occurred."
},
"action": {
"type": "string",
"enum": ["observe", "add", "delete"],
"example": "observe",
"description": "Code describing how an event relates to the lifecycle of the entity impacted by the event."
},
"disposition": {
"type": "string",
"x-external-enumeration": "https://ref.gs1.org/cbv/Disp",
"description": "Disposition code describing the state of the item after the event. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/Disp\n "
},
"bizStep": {
"type": "string",
"x-external-enumeration": "https://ref.gs1.org/cbv/BizStep",
"description": "A business step code drawn from a controlled vocabulary. \n\n This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL: https://ref.gs1.org/cbv/BizStep\n "
},
"bizLocation": {
"type": "string",
"format": "uri",
"description": "A Business Location is a uniquely identified and discretely recorded geospatial location that is meant to designate the specific place where an object is assumed to be following an EPCIS event until it is reported to be at a different Business Location by a subsequent EPCIS event. The bizLocation must be a resolvable URI that links to facility information and geolocation data."
},
"sensorElementList": {
"type": "array",
"items": { "$ref": "#/$defs/SensorElement" },
"description": "An array (one for each sensor) of sensor device data sets associated with the event. "
}
},
"description": "Transaction represents an event in which one or more objects become associated or disassociated with one or more identified business transactions - such as the purchase / shipment of goods between buyer and seller."
},
"Party": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"description": "The decentralised identifier of the party - must be a W3C DID."
},
"name": {
"type": "string",
"description": "The name of the organization or company, represented as a text string."
},
"identifiers": {
"type": "array",
"items": { "$ref": "#/$defs/Identifier" },
"description": "A list of unique business identifiers assigned to the party - such as tax registration numbers."
}
},
"description": "The Party class represents an entity such as an organization, or a company that manufactured the product."
},
"Identifier": {
"type": "object",
"additionalProperties": false,
"properties": {
"scheme": {
"type": "string",
"format": "uri",
"description": "the identifier scheme as defined by the registrar that manages the identifier registry. If the identifier scheme is registered with UNTP then this URI can use used to dicsover the resolution method (to get more data) and the verification method (to prove ownership)."
},
"identifierValue": {
"type": "string",
"description": "The value of the identifier within the scheme"
},
"binding": {
"$ref": "#/$defs/Evidence",
"description": "Link to evidence that attests to the validity and ownership of the identifer. "
}
},
"description": "An identifier of a party, product, or facility that is defined by an identifier scheme and idenfier value and, optinally, verification evidence "
},
"Evidence": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"enum": ["w3c_vc", "iso_mdl", "document", "website", "other"],
"example": "w3c_vc",
"description": "Format of the evidence (verifiable credential, document, website, etc)"
},
"assuranceLevel": {
"type": "string",
"enum": ["Self", "Commercial", "Buyer", "Membership", "Unspecified", "3rdParty"],
"example": "Self",
"description": "The assurance level of the evidence (self declaration, 2nd party, 3rd party, accredited auditor)"
},
"reference": {
"type": "string",
"format": "uri",
"description": "The URL at which the evidence data can be found. "
}
},
"description": "Evidence to support a conformity or identity claim. "
},
"Item": {
"type": "object",
"additionalProperties": false,
"properties": {
"itemID": {
"x-jargon-isKey": true,
"type": "string",
"format": "uri",
"description": "The globally unique identifier (eg GS1 GTIN or digital link) of the product item. "
},
"name": {
"type": "string",
"description": "The name of the product class to which the product item belongs. "
}
},
"description": "A specific trade item /product code which could be either a product serial number or a consignment identifier "
},
"QuantityElement": {
"type": "object",
"additionalProperties": false,
"properties": {
"epcClass": {
"type": "string",
"format": "uri",
"description": "THe identifier of a product class (as opposed to a product instance) such as a GTIN code for a manufactured product."
},
"quantity": {
"type": "number",