986 lines
54 KiB
XML
986 lines
54 KiB
XML
<?xml version='1.0' encoding='utf-8'?>
|
|
<providers xmlns="https://calco2la.to/schema/providers/v1">
|
|
<provider id="atmosfair">
|
|
<name>Atmosfair Webservice 5</name>
|
|
<baseUrl>https://api.atmosfair.de</baseUrl>
|
|
<auth type="bodyCredentials" />
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions">
|
|
<http method="POST" path="/api/emission/flight" />
|
|
<requestBody format="json">
|
|
{
|
|
"accountId": "${env.ATMOSFAIR_ACCOUNT_ID}",
|
|
"password": "${env.ATMOSFAIR_PASSWORD}",
|
|
"calculationMethod": "${request.calculation_method}",
|
|
"flights": [
|
|
#for leg in request.legs
|
|
{
|
|
"departure": "${leg.origin_iata}",
|
|
"arrival": "${leg.destination_iata}",
|
|
"flightNumber": "${leg.flight_number}",
|
|
"departureDate": "${leg.departure_date}",
|
|
"passengerCount": ${leg.passenger_count},
|
|
"flightCount": ${leg.flight_count},
|
|
"travelClass": "${leg.travel_class}",
|
|
"charter": ${leg.charter},
|
|
"aircraftType": "${leg.aircraft_type}"
|
|
}#sep,
|
|
#end
|
|
]
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="atmosfair" />
|
|
<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="$.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" target="SegmentEmissionResult.origin.iata" />
|
|
<field source="$.arrival" target="SegmentEmissionResult.destination.iata" />
|
|
<field source="$.flightNumber" target="SegmentEmissionResult.flightNumber" />
|
|
<field source="$.departureDate" target="SegmentEmissionResult.flightDate" />
|
|
<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="$.aircraftType" target="SegmentEmissionResult.aircraftType" />
|
|
<field source="$.co2" target="SegmentEmissionResult.emissions.co2eKg" />
|
|
<field source="$.co2WithoutRfi" target="SegmentEmissionResult.emissions.co2Kg" />
|
|
<field source="$.distance" target="SegmentEmissionResult.distance.value" />
|
|
<constant target="SegmentEmissionResult.distance.unit" value="km" />
|
|
<field source="$.fuelInLiter" target="SegmentEmissionResult.fuel.liters" />
|
|
<field source="$.cruiseAltitude" target="SegmentEmissionResult.cruiseAltitude" />
|
|
<field source="$.distanceInCriticalAltitudes" target="SegmentEmissionResult.distanceInCriticalAltitudes" />
|
|
<field source="$" target="SegmentEmissionResult.vendorRaw" />
|
|
</list>
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<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>
|
|
<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>
|
|
<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>
|
|
<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>
|
|
<provider id="carboninterface">
|
|
<name>Carbon Interface</name>
|
|
<baseUrl>https://www.carboninterface.com/api/v1</baseUrl>
|
|
<auth type="bearer">
|
|
<envKey>CARBONINTERFACE_API_KEY</envKey>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions">
|
|
<http method="POST" path="/estimates" />
|
|
<requestBody format="json">
|
|
{
|
|
"type": "flight",
|
|
"passengers": ${request.passengers},
|
|
"legs": [
|
|
#for leg in request.legs
|
|
{
|
|
"departure_airport": "${leg.origin_iata}",
|
|
"destination_airport": "${leg.destination_iata}"
|
|
}#sep,
|
|
#end
|
|
]
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="carboninterface" />
|
|
<constant target="EmissionCalculationResult.domain" value="travel.flight" />
|
|
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions" />
|
|
<field source="$.data.attributes.carbon_kg" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$.data.attributes.carbon_mt" target="EmissionCalculationResult.total.co2eTonnes" />
|
|
<constant target="EmissionCalculationResult.total.unit" value="kg" />
|
|
<constant target="EmissionCalculationResult.total.per" value="request" />
|
|
<field source="$.data.id" target="EmissionCalculationResult.quote.id" />
|
|
<field source="$.data.attributes.passengers" target="EmissionCalculationResult.passengerCount" />
|
|
<field source="$.data.attributes.distance_value" target="EmissionCalculationResult.distance.value" />
|
|
<field source="$.data.attributes.distance_unit" target="EmissionCalculationResult.distance.unit" />
|
|
<field source="$.data.attributes.estimated_at" target="EmissionCalculationResult.methodology.datasetVersion" />
|
|
<constant target="EmissionCalculationResult.methodology.vendor" value="Carbon Interface" />
|
|
<list source="$.data.attributes.legs[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
|
|
<field source="$.departure_airport" target="SegmentEmissionResult.origin.iata" />
|
|
<field source="$.destination_airport" target="SegmentEmissionResult.destination.iata" />
|
|
<field source="$" target="SegmentEmissionResult.vendorRaw" />
|
|
</list>
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<provider id="carbontracer">
|
|
<name>CarbonTracer Uni Graz</name>
|
|
<baseUrl>https://api.carbontracer.uni-graz.at</baseUrl>
|
|
<auth type="pathApiKey">
|
|
<envKey>CARBONTRACER_API_KEY</envKey>
|
|
<placeholder>apikey</placeholder>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions">
|
|
<http method="GET" path="/routing/${env.CARBONTRACER_API_KEY}/${request.vendor_options.carbontracer_type}/${request.legs[0].origin_iata}/${request.legs[0].destination_iata}/options=airports" />
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="carbontracer" />
|
|
<constant target="EmissionCalculationResult.domain" value="travel.flight" />
|
|
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions" />
|
|
<field source="$.response.success" target="EmissionCalculationResult.vendorRaw.success" />
|
|
<field source="$.response.warning" target="EmissionCalculationResult.vendorRaw.warning" />
|
|
<field source="$.response.errors" target="EmissionCalculationResult.errors" />
|
|
<field source="$.response.data.co2eq_occupancy" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$.response.data.unitco2eq" target="EmissionCalculationResult.total.unit" />
|
|
<constant target="EmissionCalculationResult.total.per" value="passenger" />
|
|
<field source="$.response.data.distanceRoute" target="EmissionCalculationResult.distance.value" />
|
|
<field source="$.response.data.unitdistance" target="EmissionCalculationResult.distance.unit" />
|
|
<field source="$.response.data.startLocation.label" target="EmissionCalculationResult.segments[0].origin.name" />
|
|
<field source="$.response.data.startLocation.country" target="EmissionCalculationResult.segments[0].origin.country" />
|
|
<field source="$.response.data.startLocation.Longitude" target="EmissionCalculationResult.segments[0].origin.lon" />
|
|
<field source="$.response.data.startLocation.latitute" target="EmissionCalculationResult.segments[0].origin.lat" />
|
|
<field source="$.response.data.endLocation.label" target="EmissionCalculationResult.segments[0].destination.name" />
|
|
<field source="$.response.data.endLocation.country" target="EmissionCalculationResult.segments[0].destination.country" />
|
|
<field source="$.response.data.endLocation.Longitude" target="EmissionCalculationResult.segments[0].destination.lon" />
|
|
<field source="$.response.data.endLocation.latitute" target="EmissionCalculationResult.segments[0].destination.lat" />
|
|
<field source="$.response.data.requestType" target="EmissionCalculationResult.segments[0].type" />
|
|
<field source="$.response.data.co2eq" target="EmissionCalculationResult.segments[0].emissions.co2eKg" />
|
|
<field source="$.response.data.occupancy" target="EmissionCalculationResult.segments[0].passengerCount" />
|
|
<field source="$.response.data.distanceRoute" target="EmissionCalculationResult.segments[0].distance.value" />
|
|
<field source="$.response.data.unitdistance" target="EmissionCalculationResult.segments[0].distance.unit" />
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
<operation id="travel.flight.estimate_emissions.distance">
|
|
<http method="GET" path="/co2only/${env.CARBONTRACER_API_KEY}/${request.vendor_options.carbontracer_type}/${request.legs[0].distance_km}" />
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="carbontracer" />
|
|
<constant target="EmissionCalculationResult.domain" value="travel.flight" />
|
|
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions.distance" />
|
|
<field source="$.response.success" target="EmissionCalculationResult.vendorRaw.success" />
|
|
<field source="$.response.warning" target="EmissionCalculationResult.vendorRaw.warning" />
|
|
<field source="$.response.errors" target="EmissionCalculationResult.errors" />
|
|
<field source="$.response.data.co2eq" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$.response.data.unitco2eq" target="EmissionCalculationResult.total.unit" />
|
|
<field source="$.response.data.distance" target="EmissionCalculationResult.distance.value" />
|
|
<field source="$.response.data.unitdistance" target="EmissionCalculationResult.distance.unit" />
|
|
<field source="$.response.data.requestType" target="EmissionCalculationResult.segments[0].type" />
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
<operation id="travel.location.search">
|
|
<http method="GET" path="/location/${env.CARBONTRACER_API_KEY}/${request.query}" />
|
|
<responseMapping mode="single" rootType="LocationRef">
|
|
<field source="$.response.data.country" target="LocationRef.country" />
|
|
<field source="$.response.data.city" target="LocationRef.city" />
|
|
<field source="$.response.data.label" target="LocationRef.name" />
|
|
<field source="$.response.data.Longitude" target="LocationRef.lon" />
|
|
<field source="$.response.data.latitute" target="LocationRef.lat" />
|
|
<field source="$" target="LocationRef.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<provider id="clevel">
|
|
<name>C-Level Carbon Balance API</name>
|
|
<baseUrl>https://api.c-level.earth</baseUrl>
|
|
<auth type="apiKey">
|
|
<header>Authorization</header>
|
|
<format>Bearer ${API_KEY}</format>
|
|
<envKey>CLEVEL_API_KEY</envKey>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions">
|
|
<http method="POST" path="/v1/calculate/flight" />
|
|
<requestBody format="json">
|
|
{
|
|
"IataCodes":[
|
|
#for waypoint in request.iata_path
|
|
"${waypoint}"#sep,
|
|
#end
|
|
],
|
|
"IsReturn":${request.roundtrip},
|
|
"Passengers":${request.passengers},
|
|
"Class":"${request.vendor_options.clevel_class}",
|
|
"Type":"${request.vendor_options.clevel_type}",
|
|
"AircraftModel":"${request.vendor_options.aircraft_model}",
|
|
"Reference":"${request.reference}",
|
|
"CurrencyCode":"${request.currency}"
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="clevel" />
|
|
<field source="$.Co2Total_Kg" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$.Co2Total_Tonne" target="EmissionCalculationResult.total.co2eTonnes" />
|
|
<field source="$.Co2PerPerson_kg" target="EmissionCalculationResult.perPassenger.co2eKg" />
|
|
<field source="$.Passengers" target="EmissionCalculationResult.passengerCount" />
|
|
<field source="$.FlightClass" target="EmissionCalculationResult.travelClass" />
|
|
<field source="$.TotalDistance_Km" target="EmissionCalculationResult.distance.value" />
|
|
<constant target="EmissionCalculationResult.distance.unit" value="km" />
|
|
<field source="$.TotalDistance_Miles" target="EmissionCalculationResult.distance.miles" />
|
|
<field source="$.PerPersonPrice" target="EmissionCalculationResult.perPassengerPrice.amount" />
|
|
<field source="$.TotalPrice" target="EmissionCalculationResult.offset.amount" />
|
|
<field source="$.CurrencyCode" target="EmissionCalculationResult.offset.currency" />
|
|
<field source="$.QuoteId" target="EmissionCalculationResult.quote.id" />
|
|
<field source="$.QuoteExpiry" target="EmissionCalculationResult.quote.expiresAt" />
|
|
<field source="$.ShortDescription" target="EmissionCalculationResult.description" />
|
|
<field source="$.MetaData" target="EmissionCalculationResult.metadata" />
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<provider id="climatiq_travel_preview3">
|
|
<name>Climatiq Travel v1-preview3</name>
|
|
<baseUrl>https://preview.api.climatiq.io</baseUrl>
|
|
<auth type="bearer">
|
|
<envKey>CLIMATIQ_API_KEY</envKey>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions">
|
|
<http method="POST" path="/travel/v1-preview3/distance" />
|
|
<requestBody format="json">
|
|
{
|
|
"travel_mode": "air",
|
|
"origin": {
|
|
"iata": "${request.legs[0].origin_iata}"
|
|
},
|
|
"destination": {
|
|
"iata": "${request.legs[0].destination_iata}"
|
|
},
|
|
"year": ${request.vendor_options.climatiq_year},
|
|
"distance_km": ${request.legs[0].distance_km},
|
|
"air_details": ${request.vendor_options.climatiq_air_details}
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="climatiq_travel_preview3" />
|
|
<constant target="EmissionCalculationResult.domain" value="travel.flight" />
|
|
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions" />
|
|
<field source="$.co2e" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$.co2e_unit" target="EmissionCalculationResult.total.unit" />
|
|
<constant target="EmissionCalculationResult.total.per" value="passenger" />
|
|
<field source="$.distance_km" target="EmissionCalculationResult.distance.value" />
|
|
<constant target="EmissionCalculationResult.distance.unit" value="km" />
|
|
<field source="$.co2e_calculation_method" target="EmissionCalculationResult.methodology.methodName" />
|
|
<constant target="EmissionCalculationResult.methodology.vendor" value="Climatiq" />
|
|
<constant target="EmissionCalculationResult.methodology.documentationUrl" value="https://www.climatiq.io/docs/api-reference/travel" />
|
|
<field source="$.origin.name" target="EmissionCalculationResult.segments[0].origin.name" />
|
|
<field source="$.origin.latitude" target="EmissionCalculationResult.segments[0].origin.lat" />
|
|
<field source="$.origin.longitude" target="EmissionCalculationResult.segments[0].origin.lon" />
|
|
<field source="$.destination.name" target="EmissionCalculationResult.segments[0].destination.name" />
|
|
<field source="$.destination.latitude" target="EmissionCalculationResult.segments[0].destination.lat" />
|
|
<field source="$.destination.longitude" target="EmissionCalculationResult.segments[0].destination.lon" />
|
|
<field source="$.direct_emissions.co2e" target="EmissionCalculationResult.segments[0].emissions.co2eKg" />
|
|
<field source="$.direct_emissions.co2e_unit" target="EmissionCalculationResult.segments[0].emissions.unit" />
|
|
<field source="$.indirect_emissions.co2e" target="EmissionCalculationResult.segments[0].vendorRaw.indirectEmissionsKg" />
|
|
<field source="$.notices" target="EmissionCalculationResult.metadata.notices" />
|
|
<field source="$.source_trail" target="EmissionCalculationResult.metadata.sourceTrail" />
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<provider id="goclimate">
|
|
<name>GoClimate Flight Footprint</name>
|
|
<baseUrl>https://api.goclimate.com</baseUrl>
|
|
<auth type="basic">
|
|
<usernameIsApiKey>true</usernameIsApiKey>
|
|
<envKey>GOCLIMATE_API_KEY</envKey>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions">
|
|
<http method="GET" path="/v1/flight_footprint" />
|
|
<requestQuery>
|
|
#for leg in request.legs
|
|
<param name="segments[${index}][origin]" value="${leg.origin_iata}" />
|
|
<param name="segments[${index}][destination]" value="${leg.destination_iata}" />
|
|
#end
|
|
<param name="cabin_class" value="${request.cabin_class}" />
|
|
#for currency in request.currencies
|
|
<param name="currencies[]" value="${currency}" />
|
|
#end
|
|
</requestQuery>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="goclimate" />
|
|
<field source="$.footprint" target="EmissionCalculationResult.total.co2eKg" />
|
|
<list source="$.offset_prices[*]" target="EmissionCalculationResult.prices" itemType="MoneyAmount">
|
|
<field source="$.amount" target="MoneyAmount.amountMinor" />
|
|
<field source="$.currency" target="MoneyAmount.currency" />
|
|
<field source="$.offset_url" target="MoneyAmount.url" />
|
|
<field source="$.locale" target="MoneyAmount.locale" />
|
|
</list>
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<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>
|
|
<provider id="ibm_eis_transport">
|
|
<name>IBM Environmental Intelligence Suite - Carbon Accounting Transport</name>
|
|
<baseUrl>https://foundation.agtech.ibm.com/v2/carbon</baseUrl>
|
|
<auth type="bearer">
|
|
<envKey>IBM_EIS_BEARER_TOKEN</envKey>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions.distance">
|
|
<http method="POST" path="/carbon/transportation_and_distribution" />
|
|
<requestBody format="json">
|
|
{
|
|
"customID": {
|
|
"id": "${request.reference}"
|
|
},
|
|
"onBehalfOfClient": {
|
|
"companyId": "${request.vendor_options.ibm_company_id}",
|
|
"companyName": "${request.vendor_options.ibm_company_name}"
|
|
},
|
|
"organisation": {
|
|
"departmentId": "${request.vendor_options.ibm_department_id}",
|
|
"departmentName": "${request.vendor_options.ibm_department_name}"
|
|
},
|
|
"requestType": "${request.vendor_options.ibm_request_type}",
|
|
"location": {
|
|
"country": "${request.vendor_options.ibm_country}",
|
|
"stateProvince": "${request.vendor_options.ibm_state_province}",
|
|
"zipPostCode": "${request.vendor_options.ibm_zip_post_code}",
|
|
"city": "${request.vendor_options.ibm_city}"
|
|
},
|
|
"site": {
|
|
"siteId": "${request.vendor_options.ibm_site_id}",
|
|
"siteName": "${request.vendor_options.ibm_site_name}",
|
|
"buildingId": "${request.vendor_options.ibm_building_id}",
|
|
"buildingName": "${request.vendor_options.ibm_building_name}"
|
|
},
|
|
"timePeriod": {
|
|
"year": ${request.vendor_options.ibm_year},
|
|
"month": ${request.vendor_options.ibm_month}
|
|
},
|
|
"activityData": {
|
|
"typeOfActivityData": "Passenger distance",
|
|
"vehicleType": "${request.vendor_options.ibm_vehicle_type}",
|
|
"distanceTravelled": "${request.legs[0].distance_km}",
|
|
"numberOfPassengers": ${request.passengers},
|
|
"unitOfMeasurement": "passenger kilometer",
|
|
"fuelUsed": "",
|
|
"fuelAmount": "",
|
|
"unitOfFuelAmount": ""
|
|
}
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="ibm_eis_transport" />
|
|
<constant target="EmissionCalculationResult.domain" value="travel.flight" />
|
|
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions.distance" />
|
|
<constant target="EmissionCalculationResult.methodology.vendor" value="IBM Environmental Intelligence Suite" />
|
|
<constant target="EmissionCalculationResult.methodology.documentationUrl" value="https://foundation.agtech.ibm.com/v2/docs/" />
|
|
<field source="$.co2e" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$.co2e_kg" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$.emissions.co2e" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$.result.co2e" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<provider id="klimalink">
|
|
<name>KlimaLink API</name>
|
|
<baseUrl>https://api.dev.klimalink.org</baseUrl>
|
|
<auth type="bearer">
|
|
<envKey>KLIMALINK_TOKEN</envKey>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions">
|
|
<http method="POST" path="/api/v1/calculateEmission" />
|
|
<requestBody format="json">
|
|
{
|
|
"flightActivities": [
|
|
#for leg in request.legs
|
|
{
|
|
"index":${index},
|
|
"departure":"${leg.origin_iata}",
|
|
"arrival":"${leg.destination_iata}",
|
|
"flightNumber":"${leg.flight_number}",
|
|
"flightDate":"${leg.departure_date}",
|
|
"aircraftType":"${leg.aircraft_type}",
|
|
"airline":"${leg.airline}",
|
|
"passengerCount":${leg.passenger_count},
|
|
"flightCount":${leg.flight_count},
|
|
"travelClass":"${leg.travel_class}"
|
|
}#sep,
|
|
#end
|
|
]
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="klimalink" />
|
|
<field source="$.status" target="EmissionCalculationResult.status" />
|
|
<field source="$.emissionKgCO2eTotal" target="EmissionCalculationResult.total.co2eKg" />
|
|
<list source="$.flightActivities[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
|
|
<field source="$.index" target="SegmentEmissionResult.index" />
|
|
<field source="$.type" target="SegmentEmissionResult.type" />
|
|
<field source="$.status" target="SegmentEmissionResult.status" />
|
|
<field source="$.emissionKgCO2e" target="SegmentEmissionResult.emissions.co2eKg" />
|
|
<field source="$.errors" target="SegmentEmissionResult.errors" />
|
|
<field source="$" target="SegmentEmissionResult.vendorRaw" />
|
|
</list>
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<provider id="klimapi_v1">
|
|
<name>KlimAPI v1</name>
|
|
<baseUrl>https://api.klimapi.com/v1</baseUrl>
|
|
<auth type="apiKey">
|
|
<header>X-API-KEY</header>
|
|
<format>${API_KEY}</format>
|
|
<envKey>KLIMAPI_V1_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": "flight",
|
|
"departure": "${leg.origin_iata}",
|
|
"destination": "${leg.destination_iata}",
|
|
"travel_class": "${leg.travel_class}",
|
|
"passengers": ${leg.passenger_count},
|
|
"return_trip": ${request.roundtrip}
|
|
}#sep,
|
|
#end
|
|
],
|
|
"fractional_digits": ${request.fractional_digits}
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="klimapi_v1" />
|
|
<constant target="EmissionCalculationResult.domain" value="travel.flight" />
|
|
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions" />
|
|
<field source="$.kg_amount" 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 v1 calculation_options" />
|
|
<constant target="EmissionCalculationResult.methodology.documentationUrl" value="https://klimapi.com/resources/docs?version=v1" />
|
|
<list source="$.results[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
|
|
<field source="$.result" target="SegmentEmissionResult.emissions.co2eKg" />
|
|
<field source="$.type" target="SegmentEmissionResult.type" />
|
|
<field source="$.departure" target="SegmentEmissionResult.origin.iata" />
|
|
<field source="$.destination" target="SegmentEmissionResult.destination.iata" />
|
|
<field source="$.travel_class" target="SegmentEmissionResult.travelClass" />
|
|
<field source="$.passengers" target="SegmentEmissionResult.passengerCount" />
|
|
<field source="$.return_trip" target="SegmentEmissionResult.vendorRaw.returnTrip" />
|
|
<field source="$" target="SegmentEmissionResult.vendorRaw" />
|
|
</list>
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
<operation id="travel.flight.estimate_emissions.flight_number">
|
|
<http method="POST" path="/calculate" />
|
|
<requestBody format="json">
|
|
{
|
|
"calculation_options": [
|
|
#for leg in request.legs
|
|
{
|
|
"type": "flight",
|
|
"carrier_code": "${leg.operating_carrier}",
|
|
"flight_number": ${leg.flight_number},
|
|
"departure_date": "${leg.departure_date}",
|
|
"departure": "${leg.origin_iata}",
|
|
"destination": "${leg.destination_iata}",
|
|
"travel_class": "${leg.travel_class}",
|
|
"passengers": ${leg.passenger_count}
|
|
}#sep,
|
|
#end
|
|
],
|
|
"fractional_digits": ${request.fractional_digits}
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="klimapi_v1" />
|
|
<constant target="EmissionCalculationResult.domain" value="travel.flight" />
|
|
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions.flight_number" />
|
|
<field source="$.kg_amount" 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 v1 flight-number calculation" />
|
|
<constant target="EmissionCalculationResult.methodology.documentationUrl" value="https://klimapi.com/resources/docs?version=v1" />
|
|
<list source="$.results[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
|
|
<field source="$.result" target="SegmentEmissionResult.emissions.co2eKg" />
|
|
<field source="$.type" target="SegmentEmissionResult.type" />
|
|
<field source="$.carrier_code" target="SegmentEmissionResult.airline" />
|
|
<field source="$.flight_number" target="SegmentEmissionResult.flightNumber" />
|
|
<field source="$.departure_date" target="SegmentEmissionResult.flightDate" />
|
|
<field source="$.departure" target="SegmentEmissionResult.origin.iata" />
|
|
<field source="$.destination" target="SegmentEmissionResult.destination.iata" />
|
|
<field source="$.travel_class" target="SegmentEmissionResult.travelClass" />
|
|
<field source="$.passengers" target="SegmentEmissionResult.passengerCount" />
|
|
<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": "flight",
|
|
"distance": ${leg.distance_km},
|
|
"unit": "kilometers",
|
|
"travel_class": "${leg.travel_class}",
|
|
"passengers": ${leg.passenger_count},
|
|
"return_trip": ${request.roundtrip}
|
|
}#sep,
|
|
#end
|
|
],
|
|
"fractional_digits": ${request.fractional_digits}
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="klimapi_v1" />
|
|
<constant target="EmissionCalculationResult.domain" value="travel.flight" />
|
|
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions.distance" />
|
|
<field source="$.kg_amount" 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 v1 distance calculation" />
|
|
<constant target="EmissionCalculationResult.methodology.documentationUrl" value="https://klimapi.com/resources/docs?version=v1" />
|
|
<list source="$.results[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
|
|
<field source="$.result" target="SegmentEmissionResult.emissions.co2eKg" />
|
|
<field source="$.type" target="SegmentEmissionResult.type" />
|
|
<field source="$.distance" target="SegmentEmissionResult.distance.value" />
|
|
<field source="$.unit" target="SegmentEmissionResult.distance.unit" />
|
|
<field source="$.travel_class" target="SegmentEmissionResult.travelClass" />
|
|
<field source="$.passengers" target="SegmentEmissionResult.passengerCount" />
|
|
<field source="$.return_trip" target="SegmentEmissionResult.vendorRaw.returnTrip" />
|
|
<field source="$" target="SegmentEmissionResult.vendorRaw" />
|
|
</list>
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<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>
|
|
<provider id="myclimate_bulk">
|
|
<name>myclimate Bulk Flight Calculator</name>
|
|
<baseUrl>https://api.myclimate.org</baseUrl>
|
|
<auth type="basic">
|
|
<usernameEnvKey>MYCLIMATE_USERNAME</usernameEnvKey>
|
|
<passwordEnvKey>MYCLIMATE_PASSWORD</passwordEnvKey>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions">
|
|
<http method="POST" path="/v1/bulk_flight_calculators.json" />
|
|
<requestBody format="json">
|
|
{
|
|
"flights": [
|
|
#for leg in request.legs
|
|
{
|
|
"id":"${leg.id}",
|
|
"from":"${leg.origin_iata}",
|
|
"to":"${leg.destination_iata}",
|
|
"aircraft_type":"${leg.aircraft_type}",
|
|
"flight_class":"${leg.travel_class}"
|
|
}#sep,
|
|
#end
|
|
]
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="myclimate_bulk" />
|
|
<field source="$.sum_co2eq_kg" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$.sum_km" target="EmissionCalculationResult.distance.value" />
|
|
<list source="$.flights[*]" target="EmissionCalculationResult.segments" itemType="SegmentEmissionResult">
|
|
<field source="$.id" target="SegmentEmissionResult.id" />
|
|
<field source="$.from" target="SegmentEmissionResult.origin.iata" />
|
|
<field source="$.to" target="SegmentEmissionResult.destination.iata" />
|
|
<field source="$.co2eq_kg" target="SegmentEmissionResult.emissions.co2eKg" />
|
|
<field source="$.km" target="SegmentEmissionResult.distance.value" />
|
|
<field source="$.status" target="SegmentEmissionResult.status" />
|
|
<field source="$" target="SegmentEmissionResult.vendorRaw" />
|
|
</list>
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<provider id="myclimate_v1">
|
|
<name>myclimate Flight Calculator V1</name>
|
|
<baseUrl>https://api.myclimate.org</baseUrl>
|
|
<auth type="basic">
|
|
<usernameEnvKey>MYCLIMATE_USERNAME</usernameEnvKey>
|
|
<passwordEnvKey>MYCLIMATE_PASSWORD</passwordEnvKey>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions">
|
|
<http method="POST" path="/v1/flight_calculators.json" />
|
|
<requestBody format="json">
|
|
{
|
|
"from":"${request.legs[0].origin_iata}",
|
|
"to":"${request.legs[last].destination_iata}",
|
|
"via":"${request.vendor_options.via}",
|
|
"passengers":${request.passengers},
|
|
"roundtrip":${request.roundtrip},
|
|
"flight_class":"${request.cabin_class}"
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="myclimate_v1" />
|
|
<field source="$.kg" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$.km" target="EmissionCalculationResult.distance.value" />
|
|
<constant target="EmissionCalculationResult.distance.unit" value="km" />
|
|
<field source="$.fuel_kg_per_passenger" target="EmissionCalculationResult.fuel.kg" />
|
|
<field source="$.price_in_eur_cents" target="EmissionCalculationResult.offset.amountMinor" />
|
|
<constant target="EmissionCalculationResult.offset.currency" value="EUR" />
|
|
<field source="$.errors" target="EmissionCalculationResult.errors" />
|
|
<field source="$.input_params" target="EmissionCalculationResult.inputEcho" />
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<provider id="myclimate_v2">
|
|
<name>myclimate Flight Calculator V2</name>
|
|
<baseUrl>https://api.myclimate.org</baseUrl>
|
|
<auth type="basic">
|
|
<usernameEnvKey>MYCLIMATE_USERNAME</usernameEnvKey>
|
|
<passwordEnvKey>MYCLIMATE_PASSWORD</passwordEnvKey>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions">
|
|
<http method="POST" path="/v2/flight_calculators.json" />
|
|
<requestBody format="json">
|
|
{
|
|
"from":"${request.legs[0].origin_iata}",
|
|
"to":"${request.legs[last].destination_iata}",
|
|
"via":"${request.vendor_options.via}",
|
|
"aircraft_type_leg_1":"${request.legs[0].aircraft_type}",
|
|
"aircraft_type_leg_2":"${request.legs[1].aircraft_type}",
|
|
"passengers":${request.passengers},
|
|
"roundtrip":${request.roundtrip},
|
|
"flight_class":"${request.cabin_class}"
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="myclimate_v2" />
|
|
<field source="$.kg" target="EmissionCalculationResult.total.co2eKg" />
|
|
<field source="$.km" target="EmissionCalculationResult.distance.value" />
|
|
<field source="$.fuel_kg_per_passenger" target="EmissionCalculationResult.fuel.kg" />
|
|
<field source="$.errors" target="EmissionCalculationResult.errors" />
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
<provider id="travelco2">
|
|
<name>TravelCO2 Transport API</name>
|
|
<baseUrl>https://travelco2.com</baseUrl>
|
|
<auth type="bearer">
|
|
<envKey>TRAVELCO2_API_KEY</envKey>
|
|
</auth>
|
|
<operations>
|
|
<operation id="travel.flight.estimate_emissions.distance">
|
|
<http method="POST" path="/api/v1/transport" />
|
|
<headers>
|
|
<header name="Accept" value="application/json" />
|
|
<header name="Content-Type" value="application/json" />
|
|
</headers>
|
|
<requestBody format="json">
|
|
{
|
|
"vehicle": {
|
|
"type": "${request.vendor_options.travelco2_vehicle_type}",
|
|
"fuel": {
|
|
"type": "${request.vendor_options.travelco2_fuel_type}"
|
|
}
|
|
},
|
|
"distance": ${request.legs[0].distance_m},
|
|
"people": ${request.passengers},
|
|
"language": "${request.vendor_options.travelco2_language}"
|
|
}
|
|
</requestBody>
|
|
<responseMapping mode="single" rootType="EmissionCalculationResult">
|
|
<constant target="EmissionCalculationResult.provider" value="travelco2" />
|
|
<constant target="EmissionCalculationResult.domain" value="travel.flight" />
|
|
<constant target="EmissionCalculationResult.operation" value="travel.flight.estimate_emissions.distance" />
|
|
<field source="$.co2e" target="EmissionCalculationResult.total.co2eKg" />
|
|
<constant target="EmissionCalculationResult.total.unit" value="kg" />
|
|
<constant target="EmissionCalculationResult.total.per" value="request" />
|
|
<field source="$.co2e_pp" target="EmissionCalculationResult.perPassenger.co2eKg" />
|
|
<constant target="EmissionCalculationResult.perPassenger.unit" value="kg" />
|
|
<constant target="EmissionCalculationResult.perPassenger.per" value="passenger" />
|
|
<field source="$.distance" target="EmissionCalculationResult.distance.value" />
|
|
<constant target="EmissionCalculationResult.distance.unit" value="m" />
|
|
<field source="$.people" target="EmissionCalculationResult.passengerCount" />
|
|
<field source="$.ways" target="EmissionCalculationResult.vendorRaw.ways" />
|
|
<field source="$.type" target="EmissionCalculationResult.segments[0].type" />
|
|
<field source="$.title" target="EmissionCalculationResult.description" />
|
|
<field source="$.vehicle.type" target="EmissionCalculationResult.segments[0].vendorRaw.vehicleType" />
|
|
<field source="$.vehicle.title" target="EmissionCalculationResult.segments[0].vendorRaw.vehicleTitle" />
|
|
<field source="$.vehicle.vehicle_count" target="EmissionCalculationResult.segments[0].vendorRaw.vehicleCount" />
|
|
<field source="$.vehicle.fuel.type" target="EmissionCalculationResult.segments[0].vendorRaw.fuelType" />
|
|
<field source="$.vehicle.fuel.title" target="EmissionCalculationResult.segments[0].vendorRaw.fuelTitle" />
|
|
<field source="$.co2e" target="EmissionCalculationResult.segments[0].emissions.co2eKg" />
|
|
<field source="$.co2e_pp" target="EmissionCalculationResult.segments[0].vendorRaw.co2ePerPersonKg" />
|
|
<field source="$.distance" target="EmissionCalculationResult.segments[0].distance.value" />
|
|
<constant target="EmissionCalculationResult.segments[0].distance.unit" value="m" />
|
|
<constant target="EmissionCalculationResult.methodology.vendor" value="TravelCO2" />
|
|
<constant target="EmissionCalculationResult.methodology.methodName" value="TravelCO2 Transport API" />
|
|
<constant target="EmissionCalculationResult.methodology.documentationUrl" value="https://travelco2.com/documentation" />
|
|
<field source="$" target="EmissionCalculationResult.vendorRaw" />
|
|
</responseMapping>
|
|
</operation>
|
|
</operations>
|
|
</provider>
|
|
</providers> |