nex providers

This commit is contained in:
2026-05-23 14:53:23 +02:00
parent 8795b872f9
commit c73eeb907d
8 changed files with 676 additions and 96 deletions

View File

@@ -156,6 +156,121 @@
</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>
@@ -205,6 +320,57 @@
</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>
@@ -289,6 +455,72 @@
</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>
@@ -692,4 +924,63 @@
</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>