🚀 Searoutes Cycle 19 updates – Q4 2024
In this cycle, we’ve focused on preparing the ground to receiving the ISO certification, along with a few small fixes.
Let's jump right in !
🔄 Hub automation
While Searoutes’s solution is already ISO-compliant, achieving formal ISO 14083 certification requires additional updates to our Shipment API, notably the capacity to auto-generate hubs when they can be inferred from the transport chain. This primarily involves transshipment hubs, where modal transitions occur, and maritime container terminal hubs.
During this cycle, we focused on refining the Shipment API’s logic to enable the hub automation and integration, aligning with ISO certification requirements. As this feature introduces breaking changes, we’ve carefully structured the new Shipment API contract to minimize any disruption, with a phased release planned over two cycles. This approach allows us to ensure a smooth transition to ISO-accredited standards without compromising usability.
Since we’re in the initial phase, detailed descriptions of these changes will follow in upcoming releases.
🛠 Fixes
Error codes inconsistencies
We’ve addressed inconsistencies in error code formatting. Previously, error codes were returned as integers in some exceptional cases, while they should be all formatted as strings.
See for example
{
"orders": [
{
"type": "CONTAINER",
"weight": 8000
}
],
"legs":[{
"from": "FRMRS",
"to": "FRPAR",
"mode": "air"
}]
}
used to return
{
"timestamp": 1727791493618,
"status": 400,
"error": "Bad Request",
"errorCodes": [
2001
],
"messages": [
"Air supports only LCL. Edit your orders to contain only LCL or remove air leg from your shipment."
]
}
instead of
{
"timestamp": 1727791565454,
"status": 400,
"error": "Bad Request",
"errorCodes": [
"2001"
],
"messages": [
"Air supports only LCL. Edit your orders to contain only LCL or remove air leg from your shipment."
]
}
This is now fixed, all error codes are now formatted as string, to ensure consistency and prevent parsing errors.
Shipment API intensity enhancement
We identified and resolved an issue in the Shipment API affecting how carbon intensity per leg was calculated. Previously, the intensity was averaged across all orders for a leg, rather than being calculated as a total weighted by the weight of each order. This could result in inaccurate CO2e intensity values, especially in cases where order weights varied significantly.
In below example, when calculating leg intensity with the previous logic, two orders with intensities of 0.12992 and 0.97 were averaged as follows: (0.129 + 0.97) / 2 (number of orders) = 0.54996.
This approach didn’t account for each order’s weight in the leg’s total carbon intensity. The updated method now calculates leg intensity based on the cumulative CO2e emissions for each order, weighted by order weight. In the given example, this results in an intensity of 0.0167, ensuring more accurate, consistent intensity values that align with the shipment’s total emissions.
{
"orders": [
{
"type": "LCL",
"weight": 22000,
"sizeTypeCode": "45R1",
"id": "container45R1"
},
{
"type": "PALLET",
"weight": 3000,
"id": "pallet"
}
],
"legs": [
{
"from": "FRMRS",
"to": "DEHAM",
"mode": "sea"
}
]
}
{
"parameters": {
"orders": [
{
"id": "container45R1",
"type": "LCL",
"weight": 22000,
"sizeTypeCode": "45R1"
},
{
"id": "pallet",
"type": "PALLET",
"weight": 3000
}
],
"details": {}
},
"co2e": {
"total": 1863986,
"wtt": 254573,
"ttw": 1609412,
"intensity": 0.0167
},
"legs": [
{
"from": {
"locode": "FRMRS",
"coordinates": [
5.34005236625671,
43.3317317962646
],
"city": "Marseille",
"country": "France",
"region": "Mediterranean/Black Sea"
},
"to": {
"locode": "DEHAM",
"coordinates": [
9.93855,
53.519272
],
"city": "Hamburg",
"country": "Germany",
"region": "North Europe"
},
"tradeLane": "North Europe to-from Mediterranean",
"mode": "sea",
"parameters": {},
"properties": {
"dataType": "DEFAULT",
"distance": 4464636,
"model": {
"name": "sfd-direct-emissionfactors"
},
"secaIntersection": 1329175,
"containerSizeTypeCode": "45R1",
"vessel": {
"imo": null,
"name": "North Europe to-from Mediterranean GLEC Representative Vessel",
"minTEU": null,
"maxTEU": null,
"fuelType": null
},
"tradeLane": "North Europe to-from Mediterranean",
"orders": [
{
"id": "container45R1",
"type": "LCL",
"weight": 22000,
"sizeTypeCode": "45R1",
"nTEU": 2.2,
"co2e": {
"total": 1740494,
"wtt": 237697,
"ttw": 1502796,
"intensity": 0.01772
}
},
{
"id": "pallet",
"type": "PALLET",
"weight": 3000,
"sizeTypeCode": "20GP",
"nTEU": 0.3,
"co2e": {
"total": 123492,
"wtt": 16876,
"ttw": 106616,
"intensity": 0.00922
}
}
]
},
"co2e": {
"total": 1863986,
"wtt": 254573,
"ttw": 1609412,
"intensity": 0.0167
}
}
]
}
This adjustment will give users a clearer view of leg-specific CO2e data, especially for shipments with varied order weights and types.
👀 Preview of Cycle C20
In the upcoming cycle, our main focus will be progressing toward ISO certification.
- We’ll be working on a new version of the Shipment API contract, fully aligned with ISO 14083 certification requirements. Once ready, we’ll share the details and provide a deprecation plan, giving you time to prepare for a smooth transition to the updated contract.
You just read our Product Update 👏
We'd love to hear what you think about these updates. Send us your feedback at [email protected]!