update to providers

This commit is contained in:
2026-05-21 05:35:43 +02:00
parent e8fb9f92e4
commit 8795b872f9
4 changed files with 702 additions and 101 deletions

View File

@@ -1,33 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<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>
<providers xmlns="https://calco2la.to/schema/providers/v1">
<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="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>
<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="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>
<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>