initial untested XML commit

This commit is contained in:
2026-05-21 02:51:43 +02:00
parent ae691d495c
commit e8fb9f92e4
15 changed files with 1175 additions and 65 deletions

View File

@@ -3,47 +3,72 @@
<provider id="calco2lato">
<name>calco2la.to</name>
<baseUrl>https://api.calco2la.to</baseUrl>
<auth type="apiKey">
<header>Authorization</header>
<format>Bearer ${API_KEY}</format>
<envKey>CALCO2LATO_API_KEY</envKey>
</auth>
<operations>
<!-- travel.flight.estimate_emissions -->
<operation id="travel.flight.estimate_emissions">
<http method="POST" path="/v1/flight/estimate" />
<!-- Template-based request body in provider's JSON shape -->
<http method="POST" path="/api/flight"/>
<requestBody format="json">
{
"legs": [
"api_key": "${env.CALCO2LATO_API_KEY}",
"departureDate": "${request.departure_date}",
"rfi": ${request.rfi},
"pricePerTon": ${request.price_per_ton},
"flights": [
#for leg in request.legs
{
"origin": "${leg.origin_iata}",
"destination": "${leg.destination_iata}",
"departure_time": "${leg.departure_time}"
"departure": "${leg.origin_iata}",
"arrival": "${leg.destination_iata}",
"passengerCount": ${leg.passenger_count},
"flightCount": ${leg.flight_count},
"travelClass": "${leg.travel_class}",
"charter": ${leg.charter},
"aircraftType": "${leg.aircraft_type}",
"departureDate": "${leg.departure_date}",
"calculationMethod": "${request.calculation_method}",
"via": ${leg.via},
"rfi": ${request.rfi},
"pricePerTon": ${request.price_per_ton}
}#sep,
#end
],
"cabin_class": "${request.cabin_class}",
"passengers": ${request.passengers},
"include_non_co2": ${request.include_non_co2}
]
}
</requestBody>
<!-- How to interpret provider's JSON response -->
<responseMapping>
<map source="$.co2_kg" target="EmissionEstimate.co2_kg" />
<map source="$.co2e_kg" target="EmissionEstimate.co2e_kg" />
<map source="$.non_co2_mult" target="EmissionEstimate.non_co2_multiplier" />
<map source="$.method.name" target="EmissionEstimate.method_name" />
<map source="$.method.version" target="EmissionEstimate.method_version" />
<map source="$.standard" target="EmissionEstimate.standard" />
<map source="$.documentation_url" target="EmissionEstimate.documentation_url" />
<!-- store full JSON -->
<map source="$" target="EmissionEstimate.vendor_raw" />
<responseMapping mode="single" rootType="EmissionCalculationResult">
<constant target="EmissionCalculationResult.provider" value="calco2lato"/>
<constant target="EmissionCalculationResult.domain" value="travel.flight"/>
<field source="$.status" target="EmissionCalculationResult.status"/>
<field source="$.co2" target="EmissionCalculationResult.total.co2eKg"/>
<field source="$.co2WithoutRfi" target="EmissionCalculationResult.total.co2Kg"/>
<field source="$.rfi" target="EmissionCalculationResult.total.nonCo2Multiplier"/>
<field source="$.offsetInEUR" target="EmissionCalculationResult.offset.amount"/>
<constant target="EmissionCalculationResult.offset.currency" value="EUR"/>
<field source="$.distance" target="EmissionCalculationResult.distance.value"/>
<constant target="EmissionCalculationResult.distance.unit" value="km"/>
<field source="$.fuelInLiter" target="EmissionCalculationResult.fuel.liters"/>
<field source="$.errors" target="EmissionCalculationResult.errors"/>
<field source="$" target="EmissionCalculationResult.vendorRaw"/>
<list source="$.flights[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
<field source="$.departure.iata" target="SegmentEmissionResult.origin.iata"/>
<field source="$.arrival.iata" target="SegmentEmissionResult.destination.iata"/>
<field source="$.passengerCount" target="SegmentEmissionResult.passengerCount"/>
<field source="$.flightCount" target="SegmentEmissionResult.flightCount"/>
<field source="$.travelClass" target="SegmentEmissionResult.travelClass"/>
<field source="$.charter" target="SegmentEmissionResult.charter"/>
<field source="$.departureDate" target="SegmentEmissionResult.flightDate"/>
<field source="$.distance" target="SegmentEmissionResult.distance.value"/>
<constant target="SegmentEmissionResult.distance.unit" value="km"/>
<field source="$.co2" target="SegmentEmissionResult.emissions.co2eKg"/>
<field source="$.co2WithoutRfi" target="SegmentEmissionResult.emissions.co2Kg"/>
<field source="$.offsetInEUR" target="SegmentEmissionResult.offset.amount"/>
<constant target="SegmentEmissionResult.offset.currency" value="EUR"/>
<field source="$" target="SegmentEmissionResult.vendorRaw"/>
</list>
</responseMapping>
</operation>