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

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