114 lines
6.3 KiB
XML
114 lines
6.3 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<providers xmlns="https://calco2la.to/schema/providers/v1">
|
|
<provider id="klimapi_v2">
|
|
<name>KlimAPI v2</name>
|
|
<baseUrl>https://api.klimapi.com/v2</baseUrl>
|
|
<auth type="apiKey">
|
|
<header>X-API-KEY</header>
|
|
<format>${API_KEY}</format>
|
|
<envKey>KLIMAPI_V2_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": "travel-air",
|
|
"activity": "flights",
|
|
"specification": "${request.vendor_options.klimapi_specification}",
|
|
"detail": "${request.vendor_options.klimapi_detail}",
|
|
"departure": "${leg.origin_iata}",
|
|
"destination": "${leg.destination_iata}",
|
|
"return_trip": ${request.roundtrip},
|
|
"passengers": ${leg.passenger_count}
|
|
}#sep,
|
|
#end
|
|
],
|
|
"fractional_digits": ${request.fractional_digits}
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="klimapi_v2"/>
|
|
<constant target="EmissionCalculationResult.domain" value="travel.flight"/>
|
|
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions"/>
|
|
|
|
<field source="$.kgCO2e" 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 v2 calculation_options"/>
|
|
<constant target="EmissionCalculationResult.methodology.documentationUrl" value="https://klimapi.com/resources/docs"/>
|
|
|
|
<list source="$.results[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
|
|
<field source="$.type" target="SegmentEmissionResult.type"/>
|
|
<field source="$.activity" target="SegmentEmissionResult.vendorRaw.activity"/>
|
|
<field source="$.specification" target="SegmentEmissionResult.vendorRaw.specification"/>
|
|
<field source="$.detail" target="SegmentEmissionResult.travelClass"/>
|
|
<field source="$.value" target="SegmentEmissionResult.distance.value"/>
|
|
<field source="$.unit" target="SegmentEmissionResult.distance.unit"/>
|
|
<field source="$.kgCO2e" target="SegmentEmissionResult.emissions.co2eKg"/>
|
|
<field source="$.emission_factor_id" target="SegmentEmissionResult.vendorRaw.emissionFactorId"/>
|
|
<field source="$.emission_factor_last_updated" target="SegmentEmissionResult.vendorRaw.emissionFactorLastUpdated"/>
|
|
<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": "travel-air",
|
|
"activity": "flights",
|
|
"specification": "${request.vendor_options.klimapi_specification}",
|
|
"detail": "${request.vendor_options.klimapi_detail}",
|
|
"value": ${leg.vendor_options.klimapi_passenger_distance},
|
|
"unit": "${request.vendor_options.klimapi_unit}"
|
|
}#sep,
|
|
#end
|
|
],
|
|
"fractional_digits": ${request.fractional_digits}
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="klimapi_v2"/>
|
|
<constant target="EmissionCalculationResult.domain" value="travel.flight"/>
|
|
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions.distance"/>
|
|
|
|
<field source="$.kgCO2e" 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 v2 passenger-distance calculation"/>
|
|
<constant target="EmissionCalculationResult.methodology.documentationUrl" value="https://klimapi.com/resources/docs"/>
|
|
|
|
<list source="$.results[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
|
|
<field source="$.type" target="SegmentEmissionResult.type"/>
|
|
<field source="$.activity" target="SegmentEmissionResult.vendorRaw.activity"/>
|
|
<field source="$.specification" target="SegmentEmissionResult.vendorRaw.specification"/>
|
|
<field source="$.detail" target="SegmentEmissionResult.travelClass"/>
|
|
<field source="$.value" target="SegmentEmissionResult.distance.value"/>
|
|
<field source="$.unit" target="SegmentEmissionResult.distance.unit"/>
|
|
<field source="$.kgCO2e" target="SegmentEmissionResult.emissions.co2eKg"/>
|
|
<field source="$.emission_factor_id" target="SegmentEmissionResult.vendorRaw.emissionFactorId"/>
|
|
<field source="$.emission_factor_last_updated" target="SegmentEmissionResult.vendorRaw.emissionFactorLastUpdated"/>
|
|
<field source="$" target="SegmentEmissionResult.vendorRaw"/>
|
|
</list>
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw"/>
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
|
|
</providers> |