55 lines
2.8 KiB
XML
55 lines
2.8 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<providers xmlns="https://calco2la.to/schema/providers/v1">
|
|
<!-- Google TIM -->
|
|
<provider id="google_tim">
|
|
<name>Google Travel Impact Model</name>
|
|
<baseUrl>https://travelimpactmodel.googleapis.com</baseUrl>
|
|
<auth type="apiKey">
|
|
<header>X-Goog-Api-Key</header>
|
|
<format>${API_KEY}</format>
|
|
<envKey>GOOGLE_TIM_API_KEY</envKey>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions">
|
|
<http method="POST" path="/v1/flights:computeFlightEmissions"/>
|
|
<requestBody format="json">
|
|
{
|
|
"flights": [
|
|
#for leg in request.legs
|
|
{
|
|
"origin":"${leg.origin_iata}",
|
|
"destination":"${leg.destination_iata}",
|
|
"operatingCarrierCode":"${leg.operating_carrier}",
|
|
"flightNumber":${leg.flight_number},
|
|
"departureDate":{
|
|
"year":${leg.departure_date.year},
|
|
"month":${leg.departure_date.month},
|
|
"day":${leg.departure_date.day}
|
|
}
|
|
}#sep,
|
|
#end
|
|
]
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="google_tim"/>
|
|
<field source="$.modelVersion.major" target="EmissionCalculationResult.methodology.methodVersion"/>
|
|
<list source="$.flightEmissions[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
|
|
<field source="$.flight.origin" target="SegmentEmissionResult.origin.iata"/>
|
|
<field source="$.flight.destination" target="SegmentEmissionResult.destination.iata"/>
|
|
<field source="$.flight.operatingCarrierCode" target="SegmentEmissionResult.airline"/>
|
|
<field source="$.flight.flightNumber" target="SegmentEmissionResult.flightNumber"/>
|
|
<field source="$.source" target="SegmentEmissionResult.source"/>
|
|
<field source="$.emissionsGramsPerPax.economy" target="SegmentEmissionResult.classEmissions.economyKg" transform="divideBy1000"/>
|
|
<field source="$.emissionsGramsPerPax.premiumEconomy" target="SegmentEmissionResult.classEmissions.premiumEconomyKg" transform="divideBy1000"/>
|
|
<field source="$.emissionsGramsPerPax.business" target="SegmentEmissionResult.classEmissions.businessKg" transform="divideBy1000"/>
|
|
<field source="$.emissionsGramsPerPax.first" target="SegmentEmissionResult.classEmissions.firstKg" transform="divideBy1000"/>
|
|
<field source="$" target="SegmentEmissionResult.vendorRaw"/>
|
|
</list>
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw"/>
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
</providers>
|