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

@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="UTF-8"?>
<providers xmlns="https://calco2la.to/schema/providers/v1">
<provider id="klimapi_v1">
<name>KlimAPI v1</name>
<baseUrl>https://api.klimapi.com/v1</baseUrl>
<auth type="apiKey">
<header>X-API-KEY</header>
<format>${API_KEY}</format>
<envKey>KLIMAPI_V1_API_KEY</envKey>
</auth>
<operations>
<operation id="travel.flight.estimate_emissions">
<http method="POST" path="/calculate"/>
<requestBody format="json">
{
"calculation_options": [
#for leg in request.legs
{
"type": "flight",
"departure": "${leg.origin_iata}",
"destination": "${leg.destination_iata}",
"travel_class": "${leg.travel_class}",
"passengers": ${leg.passenger_count},
"return_trip": ${request.roundtrip}
}#sep,
#end
],
"fractional_digits": ${request.fractional_digits}
}
</requestBody>
<responseMapping mode="single" rootType="EmissionCalculationResult">
<constant target="EmissionCalculationResult.provider" value="klimapi_v1"/>
<constant target="EmissionCalculationResult.domain" value="travel.flight"/>
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions"/>
<field source="$.kg_amount" target="EmissionCalculationResult.total.co2eKg"/>
<constant target="EmissionCalculationResult.total.unit" value="kg"/>
<constant target="EmissionCalculationResult.total.per" value="request"/>
<field source="$.calculation_id" target="EmissionCalculationResult.quote.id"/>
<constant target="EmissionCalculationResult.methodology.vendor" value="KlimAPI"/>
<constant target="EmissionCalculationResult.methodology.methodName" value="KlimAPI v1 calculation_options"/>
<constant target="EmissionCalculationResult.methodology.documentationUrl" value="https://klimapi.com/resources/docs?version=v1"/>
<list source="$.results[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
<field source="$.result" target="SegmentEmissionResult.emissions.co2eKg"/>
<field source="$.type" target="SegmentEmissionResult.type"/>
<field source="$.departure" target="SegmentEmissionResult.origin.iata"/>
<field source="$.destination" target="SegmentEmissionResult.destination.iata"/>
<field source="$.travel_class" target="SegmentEmissionResult.travelClass"/>
<field source="$.passengers" target="SegmentEmissionResult.passengerCount"/>
<field source="$.return_trip" target="SegmentEmissionResult.vendorRaw.returnTrip"/>
<field source="$" target="SegmentEmissionResult.vendorRaw"/>
</list>
<field source="$" target="EmissionCalculationResult.vendorRaw"/>
</responseMapping>
</operation>
<operation id="travel.flight.estimate_emissions.flight_number">
<http method="POST" path="/calculate"/>
<requestBody format="json">
{
"calculation_options": [
#for leg in request.legs
{
"type": "flight",
"carrier_code": "${leg.operating_carrier}",
"flight_number": ${leg.flight_number},
"departure_date": "${leg.departure_date}",
"departure": "${leg.origin_iata}",
"destination": "${leg.destination_iata}",
"travel_class": "${leg.travel_class}",
"passengers": ${leg.passenger_count}
}#sep,
#end
],
"fractional_digits": ${request.fractional_digits}
}
</requestBody>
<responseMapping mode="single" rootType="EmissionCalculationResult">
<constant target="EmissionCalculationResult.provider" value="klimapi_v1"/>
<constant target="EmissionCalculationResult.domain" value="travel.flight"/>
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions.flight_number"/>
<field source="$.kg_amount" target="EmissionCalculationResult.total.co2eKg"/>
<constant target="EmissionCalculationResult.total.unit" value="kg"/>
<constant target="EmissionCalculationResult.total.per" value="request"/>
<field source="$.calculation_id" target="EmissionCalculationResult.quote.id"/>
<constant target="EmissionCalculationResult.methodology.vendor" value="KlimAPI"/>
<constant target="EmissionCalculationResult.methodology.methodName" value="KlimAPI v1 flight-number calculation"/>
<constant target="EmissionCalculationResult.methodology.documentationUrl" value="https://klimapi.com/resources/docs?version=v1"/>
<list source="$.results[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
<field source="$.result" target="SegmentEmissionResult.emissions.co2eKg"/>
<field source="$.type" target="SegmentEmissionResult.type"/>
<field source="$.carrier_code" target="SegmentEmissionResult.airline"/>
<field source="$.flight_number" target="SegmentEmissionResult.flightNumber"/>
<field source="$.departure_date" target="SegmentEmissionResult.flightDate"/>
<field source="$.departure" target="SegmentEmissionResult.origin.iata"/>
<field source="$.destination" target="SegmentEmissionResult.destination.iata"/>
<field source="$.travel_class" target="SegmentEmissionResult.travelClass"/>
<field source="$.passengers" target="SegmentEmissionResult.passengerCount"/>
<field source="$" target="SegmentEmissionResult.vendorRaw"/>
</list>
<field source="$" target="EmissionCalculationResult.vendorRaw"/>
</responseMapping>
</operation>
<operation id="travel.flight.estimate_emissions.distance">
<http method="POST" path="/calculate"/>
<requestBody format="json">
{
"calculation_options": [
#for leg in request.legs
{
"type": "flight",
"distance": ${leg.distance_km},
"unit": "kilometers",
"travel_class": "${leg.travel_class}",
"passengers": ${leg.passenger_count},
"return_trip": ${request.roundtrip}
}#sep,
#end
],
"fractional_digits": ${request.fractional_digits}
}
</requestBody>
<responseMapping mode="single" rootType="EmissionCalculationResult">
<constant target="EmissionCalculationResult.provider" value="klimapi_v1"/>
<constant target="EmissionCalculationResult.domain" value="travel.flight"/>
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions.distance"/>
<field source="$.kg_amount" target="EmissionCalculationResult.total.co2eKg"/>
<constant target="EmissionCalculationResult.total.unit" value="kg"/>
<constant target="EmissionCalculationResult.total.per" value="request"/>
<field source="$.calculation_id" target="EmissionCalculationResult.quote.id"/>
<constant target="EmissionCalculationResult.methodology.vendor" value="KlimAPI"/>
<constant target="EmissionCalculationResult.methodology.methodName" value="KlimAPI v1 distance calculation"/>
<constant target="EmissionCalculationResult.methodology.documentationUrl" value="https://klimapi.com/resources/docs?version=v1"/>
<list source="$.results[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
<field source="$.result" target="SegmentEmissionResult.emissions.co2eKg"/>
<field source="$.type" target="SegmentEmissionResult.type"/>
<field source="$.distance" target="SegmentEmissionResult.distance.value"/>
<field source="$.unit" target="SegmentEmissionResult.distance.unit"/>
<field source="$.travel_class" target="SegmentEmissionResult.travelClass"/>
<field source="$.passengers" target="SegmentEmissionResult.passengerCount"/>
<field source="$.return_trip" target="SegmentEmissionResult.vendorRaw.returnTrip"/>
<field source="$" target="SegmentEmissionResult.vendorRaw"/>
</list>
<field source="$" target="EmissionCalculationResult.vendorRaw"/>
</responseMapping>
</operation>
</operations>
</provider>
</providers>