Files
2026-05-21 02:51:43 +02:00

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>