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,48 +3,52 @@
<!-- Google TIM -->
<provider id="google_tim">
<name>Google Travel Impact Model</name>
<baseUrl>https://travelimpactmodel.googleapis.com/v1</baseUrl>
<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="/flights:computeFlightEmissions" />
<http method="POST" path="/v1/flights:computeFlightEmissions"/>
<requestBody format="json">
{
"flightSegments": [
"flights": [
#for leg in request.legs
{
"departureAirport": { "code": "${leg.origin_iata}" },
"arrivalAirport": { "code": "${leg.destination_iata}" }
"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
],
"cabinClass": "${request.cabin_class}",
"passengerCount": ${request.passengers}
]
}
</requestBody>
<responseMapping>
<map source="$.flightEmissions[0].co2Grams"
target="EmissionEstimate.co2_kg"
transform="divideBy1000" />
<map source="$.flightEmissions[0].co2eGrams"
target="EmissionEstimate.co2e_kg"
transform="divideBy1000" />
<map source="$.modelVersion"
target="EmissionEstimate.method_version" />
<constant target="EmissionEstimate.method_name" value="Travel Impact Model" />
<constant target="EmissionEstimate.vendor" value="google_tim" />
<map source="$" target="EmissionEstimate.vendor_raw" />
<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>