@@ -140,7 +140,6 @@ status tags are:
140
140
: <dfn>Transport Service User</dfn>
141
141
:: Refers to the party that purchases and or utilizes a transport service. It could be a [=shipper=] or a [=Transport Service Organizer=] . See [[!ISO14083]] , Section 3.1.33.
142
142
143
-
144
143
## Auxillary Definitions ## {#auxillary-definitions}
145
144
146
145
: <dfn>Access Token</dfn>
@@ -2483,12 +2482,118 @@ the links above for further details.
2483
2482
Any optional property that is not explicitly mentioned above MAY remain unset. All mandatory
2484
2483
properties that cannot be derived from `HOC` CAN be populated in a best-effort manner.
2485
2484
2485
+ # Conformance # {#conformance}
2486
+
2487
+ The iLEAP Technical Specifications are designed to be incrementally adopted and
2488
+ realized in [=host systems=] for different stakeholder groups. Therefore,
2489
+ there are 2 kinds of <dfn>iLEAP conformance</dfn> defined:
2490
+
2491
+ 1. [=iLEAP Emissions Data Conformance=]
2492
+ 1. [=iLEAP Activity Data Conformance=]
2493
+
2494
+ For each kind of iLEAP Conformance, a host system achieves conformity by
2495
+
2496
+ 1. realizing the normative statements and relevant test cases referenced
2497
+ in [[#ileap-conformance-matrix]] below,
2498
+ 2. successfully passing Bilateral Testing ([[#conformity-bilateral-testing]] )
2499
+ 3. succesfully passing the [Automated Conformance Testing] (https://act.sine.dev)
2500
+
2501
+ To achieve iLEAP Emissions Data Conformance, [=host systems=] are further REQUIRED to support the
2502
+ following features:
2503
+ 1. fetching <{TAD}> from another host system and
2504
+ 2. using it to generate <{TOC}> , <{HOC}> , or <{ShipmentFootprint}> data.
2505
+
2506
+ It is RECOMMENDED for host systems to conform to both kinds of [=iLEAP conformance=] .
2507
+
2508
+ Sections marked as non-normative, all authoring guidelines, diagrams, examples,
2509
+ and notes in this specification are non-normative. Everything else in this
2510
+ specification is normative.
2511
+
2512
+ The key words MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, REQUIRED, SHOULD,
2513
+ and SHOULD NOT in this document are to be interpreted as described in
2514
+ [[!RFC2119]] [[!RFC8174]] when, and only when, they appear in all capitals,
2515
+ as shown here.
2516
+
2517
+ Advisement: Currently, iLEAP Conformance ensures interoperability and syntactic correctness. Future
2518
+ updates will extend coverage to include semantic correctness, ensuring that emissions calculations
2519
+ are performed accurately in end-to-end scenarios.
2520
+
2521
+ ## Conformance Matrix ## {#ileap-conformance-matrix}
2522
+
2523
+ <figure>
2524
+ <table class="complex data">
2525
+ <thead>
2526
+ <tr>
2527
+ <th style="text-align: left"> Test Case
2528
+ <th style="text-align: left"> Conformance
2529
+ <tbody >
2530
+ <tr>
2531
+ <td style="text-align: left"> All [PACT Required Test Cases] (https://wbcsd.github.io/pact-conformance-testing/checklist.html#required-tests)
2532
+ <td rowspan="4"> <dfn>iLEAP Emissions Data Conformance</dfn>
2533
+
2534
+ <tr>
2535
+ <td style="text-align: left"> [[#test-case-001]]
2536
+
2537
+ <tr>
2538
+ <td style="text-align: left"> [[#test-case-002]]
2539
+
2540
+ <tr>
2541
+ <td style="text-align: left"> [[#test-case-003]]
2542
+
2543
+ <tr>
2544
+ <td style="text-align: left"> [[#test-case-004]]
2545
+ <td rowspan="5"> <dfn>iLEAP Activity Data Conformance</dfn>
2546
+
2547
+ <tr>
2548
+ <td style="text-align: left"> [[#test-case-005]]
2549
+
2550
+ <tr>
2551
+ <td style="text-align: left"> [[#test-case-006]]
2552
+
2553
+ <tr>
2554
+ <td style="text-align: left"> [[#test-case-007]]
2555
+
2556
+ <tr>
2557
+ <td style="text-align: left"> [[#test-case-008]]
2558
+
2559
+ </table>
2560
+ <figcaption> iLEAP Conformance Matrix</figcaption>
2561
+ </figure>
2562
+
2563
+
2564
+ ## Bilateral Testing ## {#conformity-bilateral-testing}
2565
+
2566
+ A Bilateral Test is an interoperability test where two different [=host system=]
2567
+ implementations participate to verify conformance ([[#conformance]] ) and their
2568
+ ability to work together.
2569
+
2570
+ One system acts as the [=data owner=] . It is called the <dfn>target host system</dfn> and is the system under test.
2571
+ The second system acts as the testing party.
2572
+
2573
+ Note:
2574
+ The objective of Bilateral Testing is to ensure that systems can effectively
2575
+ communicate despite having independent codebases.
2576
+
2577
+
2578
+ ## Submission ## {#conformity-submission}
2579
+
2580
+ Note: non-normative
2581
+
2582
+ Once a [=host system=] achieved [=iLEAP conformance=] in 1 or all kinds of iLEAP conformance,
2583
+ the implementer is requested to reach out to the authors of this Technical Specifications to
2584
+ apply for additional support, materials, and marketing opportunities.
2585
+
2586
+
2486
2587
# Appendix A: Changelog # {#changelog}
2487
2588
2488
2589
## Version 0.2.120250311 (2025-02-27) ## {#version-20250311}
2489
2590
2490
2591
- remove deprecated properties `TAD/energyCarrier` and `TAD/feedstocks`
2491
2592
- small typo fixes and text improvements
2593
+ - add [[#conformance]] chapter
2594
+ - improve [[#appendix-b]] 's guidance and readability
2595
+ - finalize [[#test-case-004]]
2596
+ - populate [[#test-case-005]] , [[#test-case-006]] , [[#test-case-007]] , and [[#test-case-008]]
2492
2597
2493
2598
## Version 0.2.1-20250129 (2025-01-29) ## {#version-20250129}
2494
2599
@@ -2849,17 +2954,17 @@ In order to test the conformance of an iLEAP implementation, the following tests
2849
2954
## PACT Conformance Tests ## {#pact-conformance-tests}
2850
2955
2851
2956
Since the iLEAP Technical Specifications were conceived as an extension to the PACT Data Model and
2852
- Data Exchange Protocol, any iLEAP conformant implementation must also be PACT Conformant . For that
2853
- reason, the tests in the [PACT Conformance Testing
2854
- Checklist](https://wbcsd.github.io/pact-conformance-testing/checklist.html) must be performed.
2957
+ Data Exchange Protocol, any iLEAP conformant implementation must also implement [[!PACTDX]] v2.1.0 or above . For that
2958
+ reason, the required tests in the [PACT Conformance Testing
2959
+ Checklist](https://wbcsd.github.io/pact-conformance-testing/checklist.html#required-tests) should also be performed.
2855
2960
2856
2961
## iLEAP Specific Conformance Tests ## {#ileap-specific-conformance-tests}
2857
2962
2858
2963
The following tests are specific to the iLEAP Technical Specifications:
2859
2964
2860
2965
### Test Case 001: Get ProductFootprint with ShipmentFootprint ### {#test-case-001}
2861
2966
2862
- Tests the target host system's ability to return `ProductFootprints` with `ShipmentFootprint`s as
2967
+ Tests the [= target host system=] 's ability to return `ProductFootprints` with `ShipmentFootprint`s as
2863
2968
extensions.
2864
2969
2865
2970
#### Request #### {#test-case-001-request}
@@ -2870,7 +2975,7 @@ system with a valid access token and the syntax specified in [PACT Tech Specs V2
2870
2975
2871
2976
#### Expected Response #### {#test-case-001-response}
2872
2977
2873
- The test target host system must respond with 200 OK with a JSON body containing a list of
2978
+ The test [= target host system=] must respond with 200 OK with a JSON body containing a list of
2874
2979
`ProductFootprints` (as per the [PACT Tech Specs V2.2
2875
2980
§api-action-list-response](https://wbcsd.github.io/data-exchange-protocol/v2/#api-action-list-response)).
2876
2981
Those which include `productIds` with [the format specified for ShipmentFootprints] (#pcf-mapping-sf)
@@ -2879,15 +2984,18 @@ must be conformant with the Data Model specified in [[#dt-sf]]. The relevant pro
2879
2984
2880
2985
### Test Case 002: Get ProductFootprint with TOC ### {#test-case-002}
2881
2986
2987
+ Tests the [=target host system=] 's ability to return `ProductFootprints` with `TOC`s as
2988
+ extensions.
2989
+
2882
2990
#### Request #### {#test-case-002-request}
2883
2991
2884
- A `ListFootprints` GET request must be sent to the `/2/footprints` endpoint of the test target host
2885
- system with a valid access token and the syntax specified in [PACT Tech Specs V2.2
2992
+ A `ListFootprints` GET request must be sent to the `/2/footprints` endpoint of the test [= target host
2993
+ system=] with a valid access token and the syntax specified in [PACT Tech Specs V2.2
2886
2994
§api-action-list-request](https://wbcsd.github.io/data-exchange-protocol/v2/#api-action-list-request).
2887
2995
2888
2996
#### Expected Response #### {#test-case-002-response}
2889
2997
2890
- The test target host system must respond with 200 OK with a JSON body containing a list of
2998
+ The test [= target host system=] must respond with 200 OK with a JSON body containing a list of
2891
2999
`ProductFootprints` (as per the [PACT Tech Specs V2.2
2892
3000
§api-action-list-response](https://wbcsd.github.io/data-exchange-protocol/v2/#api-action-list-response)).
2893
3001
@@ -2901,15 +3009,17 @@ relevant properties of the `ProductFootprint` must also be confomant with the gu
2901
3009
2902
3010
### Test Case 003: Get ProductFootprint with HOC ### {#test-case-003}
2903
3011
3012
+ Tests the [=target host system=] 's ability to return `ProductFootprints` with `HOC`s as extensions.
3013
+
2904
3014
#### Request #### {#test-case-003-request}
2905
3015
2906
- A `ListFootprints` GET request must be sent to the `/2/footprints` endpoint of the test target host
2907
- system with a valid access token and the syntax specified in [PACT Tech Specs V2.2
3016
+ A `ListFootprints` GET request must be sent to the `/2/footprints` endpoint of the test [= target host
3017
+ system=] with a valid access token and the syntax specified in [PACT Tech Specs V2.2
2908
3018
§api-action-list-request](https://wbcsd.github.io/data-exchange-protocol/v2/#api-action-list-request).
2909
3019
2910
3020
#### Expected Response #### {#test-case-003-response}
2911
3021
2912
- The test target host system must respond with 200 OK with a JSON body containing a list of
3022
+ The test [= target host system=] must respond with 200 OK with a JSON body containing a list of
2913
3023
`ProductFootprints` (as per the [PACT Tech Specs V2.2
2914
3024
§api-action-list-response](https://wbcsd.github.io/data-exchange-protocol/v2/#api-action-list-response)).
2915
3025
@@ -2923,33 +3033,111 @@ relevant properties of the `ProductFootprint` must also be confomant with the gu
2923
3033
2924
3034
### Test Case 004: Get All TransportActivityData ### {#test-case-004}
2925
3035
3036
+ Tests the [=target host system=] 's ability to return all `TransportActivityData`.
3037
+
2926
3038
#### Request #### {#test-case-004-request}
2927
3039
2928
- A `TransportActivityData` GET request must be sent to the `/2/ileap/tad` endpoint of the test target
2929
- host system with a valid access token and the syntax specified in [[#action-tad-request]] .
3040
+ A `TransportActivityData` GET request must be sent to the `/2/ileap/tad` endpoint of the test [=target
3041
+ host system=] with a valid [=access token=] and the syntax specified in [[#action-tad-request]] .
3042
+
3043
+ The access token must be obtained through the [PACT's Authentication Flow] (https://wbcsd.github.io/tr/2023/data-exchange-protocol-20231207/#api-auth). This can be tested through PACT's Test Cases [001] (https://wbcsd.github.io/pact-conformance-testing/checklist.html#tc001) and [002] (https://wbcsd.github.io/pact-conformance-testing/checklist.html#tc002).
2930
3044
2931
3045
#### Expected Response #### {#test-case-004-response}
2932
3046
2933
- The test target host system must respond with 200 OK and a JSON body containing a list of
3047
+ The test [= target host system=] must respond with 200 OK and a JSON body containing a list of
2934
3048
`TransportActivityData`, in conformance with [[#action-tad-response]] and following the data model
2935
3049
specified at [[#dt-tad]] .
2936
3050
2937
3051
### Test Case 005: Get Filtered List of TransportActivityData ### {#test-case-005}
2938
3052
2939
- Issue: TBD
3053
+ Tests the [=target host system=] 's ability to return a filtered list of `TransportActivityData`.
3054
+
3055
+ #### Request #### {#test-case-005-request}
3056
+
3057
+ A `TransportActivityData` GET request must be sent to the `/2/ileap/tad` endpoint of the test [=target
3058
+ host system=] with a valid [=access token=] and the syntax specified in [[#action-tad-request]] .
3059
+
3060
+ The request must include a query parameter [=Filter=] . Any property can be used as a filter, but we
3061
+ recomend using {{TransportMode}} , iterating over all possible values:
3062
+
3063
+ - `GET /2/ileap/tad?mode=Road HTTP/1.1`
3064
+ - `GET /2/ileap/tad?mode=Rail HTTP/1.1`
3065
+ - `GET /2/ileap/tad?mode=Air HTTP/1.1`
3066
+ - `GET /2/ileap/tad?mode=Sea HTTP/1.1`
3067
+ - `GET /2/ileap/tad?mode=InlandWaterway HTTP/1.1`
3068
+
3069
+ The access token must be obtained through the [PACT's Authentication Flow] (https://wbcsd.github.io/tr/2023/data-exchange-protocol-20231207/#api-auth). This can be tested through PACT's Test Cases [001] (https://wbcsd.github.io/pact-conformance-testing/checklist.html#tc001) and [002] (https://wbcsd.github.io/pact-conformance-testing/checklist.html#tc002).
3070
+
3071
+ #### Expected Response #### {#test-case-005-response}
3072
+
3073
+ For at least one filter, the test [=target host system=] must respond with 200 OK and a JSON body
3074
+ containing a list of `TransportActivityData` matching the filter, in conformance with
3075
+ [[#action-tad-response]] and following the data model specified at [[#dt-tad]] .
2940
3076
2941
3077
### Test Case 006: Get Limited List of TransportActivityData ### {#test-case-006}
2942
3078
2943
- Issue: TBD
3079
+ Tests the [=target host system=] 's ability to return a limited list of `TransportActivityData`.
3080
+
3081
+ #### Request #### {#test-case-006-request}
3082
+
3083
+ A `TransportActivityData` GET request must be sent to the `/2/ileap/tad` endpoint of the test
3084
+ [=target host system=] with a valid [=access token=] and the syntax specified in
3085
+ [[#action-tad-request]] . The request must include a query parameter [=Limit=] with value `1`.
3086
+
3087
+ The access token must be obtained through the [PACT's Authentication
3088
+ Flow](https://wbcsd.github.io/tr/2023/data-exchange-protocol-20231207/#api-auth). This can be tested
3089
+ through PACT's Test Cases
3090
+ [001] (https://wbcsd.github.io/pact-conformance-testing/checklist.html#tc001) and
3091
+ [002] (https://wbcsd.github.io/pact-conformance-testing/checklist.html#tc002).
3092
+
3093
+ #### Expected Response #### {#test-case-006-response}
3094
+
3095
+ The test [=target host system=] must respond with 200 OK and a JSON body containing one or less
3096
+ `TransportActivityData`, in conformance with [[#action-tad-response]] and following the data model
3097
+ specified at [[#dt-tad]] .
3098
+
3099
+ If a [=pagination link=] is returned, it must conform to the syntax specified in
3100
+ [[#action-tad-response]] . Upon calling that link, the [=target host system=] must respond wih 200 OK
3101
+ and a JSON body containing one or more `TransportActivityData`.
3102
+
3103
+ If no [=pagination link=] is returned, a GET request sent to `/2/ileap/tad` (without query parameter
3104
+ [=Limit=] ) must respond with 200 OK and a JSON body containing exactly the same number of
3105
+ `TransportActivityData` as that returned in the first request (including the query parameter
3106
+ [=Limit=] with value `1`).
2944
3107
2945
3108
### Test Case 007: Attempt TransportActivityData with Invalid Token ### {#test-case-007}
2946
3109
2947
- Issue: TBD
3110
+ Tests the [=target host system=] 's ability to handle a `TransportActivityData` request with an invalid
3111
+ access token.
3112
+
3113
+ #### Request #### {#test-case-007-request}
3114
+
3115
+ A `TransportActivityData` GET request must be sent to the `/2/ileap/tad` endpoint of the test [=target
3116
+ host system=] with an invalid access token and the syntax specified in [[#action-tad-request]] .
3117
+
3118
+ #### Expected Response #### {#test-case-007-response}
3119
+
3120
+ The test [=target host system=] must respond with a 401 Unauthorized status code.
2948
3121
2949
3122
### Test Case 008: Attempt TransportActivityData with Expired Token ### {#test-case-008}
2950
3123
2951
- Issue: TBD
3124
+ Tests the [=target host system=] 's ability to handle a `TransportActivityData` request with an expired
3125
+ access token.
3126
+
3127
+ #### Request #### {#test-case-008-request}
3128
+
3129
+ A `TransportActivityData` GET request must be sent to the `/2/ileap/tad` endpoint of the test [=target
3130
+ host system=] with an expired access token and the syntax specified in [[#action-tad-request]] .
3131
+
3132
+ The access token must have been obtained through the [PACT's Authentication
3133
+ Flow](https://wbcsd.github.io/tr/2023/data-exchange-protocol-20231207/#api-auth). This can be tested
3134
+ through PACT's Test Cases
3135
+ [001] (https://wbcsd.github.io/pact-conformance-testing/checklist.html#tc001) and
3136
+ [002] (https://wbcsd.github.io/pact-conformance-testing/checklist.html#tc002).
3137
+
3138
+ #### Expected Response #### {#test-case-008-response}
2952
3139
3140
+ The test [=target host system=] must respond with a 401 Unauthorized status code.
2953
3141
2954
3142
<pre class=biblio>
2955
3143
{
0 commit comments