103 lines
5.1 KiB
XML
103 lines
5.1 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<providers xmlns="https://calco2la.to/schema/providers/v1">
|
|
<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="/api/flight"/>
|
|
<requestBody format="json">
|
|
{
|
|
"api_key": "${env.CALCO2LATO_API_KEY}",
|
|
"departureDate": "${request.departure_date}",
|
|
"rfi": ${request.rfi},
|
|
"pricePerTon": ${request.price_per_ton},
|
|
"flights": [
|
|
#for leg in request.legs
|
|
{
|
|
"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
|
|
]
|
|
}
|
|
</requestBody>
|
|
<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>
|
|
|
|
<!-- travel.airport.search -->
|
|
<operation id="travel.airport.search">
|
|
<http method="GET" path="/v1/airports/search" />
|
|
|
|
<requestQuery>
|
|
<param name="q" from="AirportSearchRequest.query" />
|
|
<param name="limit" from="AirportSearchRequest.limit" />
|
|
</requestQuery>
|
|
|
|
<responseMapping>
|
|
<!-- array mapping: one AirportInfo per item in $.results[] -->
|
|
<list target="AirportInfo">
|
|
<item source="$.results[*]">
|
|
<map source="$.iata" target="AirportInfo.iata_code" />
|
|
<map source="$.icao" target="AirportInfo.icao_code" />
|
|
<map source="$.name" target="AirportInfo.name" />
|
|
<map source="$.city" target="AirportInfo.city" />
|
|
<map source="$.country" target="AirportInfo.country" />
|
|
<map source="$.lat" target="AirportInfo.latitude" />
|
|
<map source="$.lon" target="AirportInfo.longitude" />
|
|
</item>
|
|
</list>
|
|
</responseMapping>
|
|
</operation>
|
|
|
|
</operations>
|
|
</provider>
|
|
</providers>
|