Skip to content

Commit 861ec13

Browse files
Merge branch 'main' into GabrielaRubioDomingo-patch-19
2 parents b120a9b + fe38b3e commit 861ec13

File tree

1 file changed

+207
-19
lines changed

1 file changed

+207
-19
lines changed

specs/index.bs

+207-19
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,6 @@ status tags are:
140140
: <dfn>Transport Service User</dfn>
141141
:: 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.
142142

143-
144143
## Auxillary Definitions ## {#auxillary-definitions}
145144

146145
: <dfn>Access Token</dfn>
@@ -2483,12 +2482,118 @@ the links above for further details.
24832482
Any optional property that is not explicitly mentioned above MAY remain unset. All mandatory
24842483
properties that cannot be derived from `HOC` CAN be populated in a best-effort manner.
24852484

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+
24862587
# Appendix A: Changelog # {#changelog}
24872588

24882589
## Version 0.2.120250311 (2025-02-27) ## {#version-20250311}
24892590

24902591
- remove deprecated properties `TAD/energyCarrier` and `TAD/feedstocks`
24912592
- 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]]
24922597

24932598
## Version 0.2.1-20250129 (2025-01-29) ## {#version-20250129}
24942599

@@ -2849,17 +2954,17 @@ In order to test the conformance of an iLEAP implementation, the following tests
28492954
## PACT Conformance Tests ## {#pact-conformance-tests}
28502955

28512956
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.
28552960

28562961
## iLEAP Specific Conformance Tests ## {#ileap-specific-conformance-tests}
28572962

28582963
The following tests are specific to the iLEAP Technical Specifications:
28592964

28602965
### Test Case 001: Get ProductFootprint with ShipmentFootprint ### {#test-case-001}
28612966

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
28632968
extensions.
28642969

28652970
#### Request #### {#test-case-001-request}
@@ -2870,7 +2975,7 @@ system with a valid access token and the syntax specified in [PACT Tech Specs V2
28702975

28712976
#### Expected Response #### {#test-case-001-response}
28722977

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
28742979
`ProductFootprints` (as per the [PACT Tech Specs V2.2
28752980
§api-action-list-response](https://wbcsd.github.io/data-exchange-protocol/v2/#api-action-list-response)).
28762981
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
28792984

28802985
### Test Case 002: Get ProductFootprint with TOC ### {#test-case-002}
28812986

2987+
Tests the [=target host system=]'s ability to return `ProductFootprints` with `TOC`s as
2988+
extensions.
2989+
28822990
#### Request #### {#test-case-002-request}
28832991

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
28862994
§api-action-list-request](https://wbcsd.github.io/data-exchange-protocol/v2/#api-action-list-request).
28872995

28882996
#### Expected Response #### {#test-case-002-response}
28892997

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
28912999
`ProductFootprints` (as per the [PACT Tech Specs V2.2
28923000
§api-action-list-response](https://wbcsd.github.io/data-exchange-protocol/v2/#api-action-list-response)).
28933001

@@ -2901,15 +3009,17 @@ relevant properties of the `ProductFootprint` must also be confomant with the gu
29013009

29023010
### Test Case 003: Get ProductFootprint with HOC ### {#test-case-003}
29033011

3012+
Tests the [=target host system=]'s ability to return `ProductFootprints` with `HOC`s as extensions.
3013+
29043014
#### Request #### {#test-case-003-request}
29053015

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
29083018
§api-action-list-request](https://wbcsd.github.io/data-exchange-protocol/v2/#api-action-list-request).
29093019

29103020
#### Expected Response #### {#test-case-003-response}
29113021

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
29133023
`ProductFootprints` (as per the [PACT Tech Specs V2.2
29143024
§api-action-list-response](https://wbcsd.github.io/data-exchange-protocol/v2/#api-action-list-response)).
29153025

@@ -2923,33 +3033,111 @@ relevant properties of the `ProductFootprint` must also be confomant with the gu
29233033

29243034
### Test Case 004: Get All TransportActivityData ### {#test-case-004}
29253035

3036+
Tests the [=target host system=]'s ability to return all `TransportActivityData`.
3037+
29263038
#### Request #### {#test-case-004-request}
29273039

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).
29303044

29313045
#### Expected Response #### {#test-case-004-response}
29323046

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
29343048
`TransportActivityData`, in conformance with [[#action-tad-response]] and following the data model
29353049
specified at [[#dt-tad]].
29363050

29373051
### Test Case 005: Get Filtered List of TransportActivityData ### {#test-case-005}
29383052

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]].
29403076

29413077
### Test Case 006: Get Limited List of TransportActivityData ### {#test-case-006}
29423078

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`).
29443107

29453108
### Test Case 007: Attempt TransportActivityData with Invalid Token ### {#test-case-007}
29463109

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.
29483121

29493122
### Test Case 008: Attempt TransportActivityData with Expired Token ### {#test-case-008}
29503123

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}
29523139

3140+
The test [=target host system=] must respond with a 401 Unauthorized status code.
29533141

29543142
<pre class=biblio>
29553143
{

0 commit comments

Comments
 (0)