Realizar o cálculo da pegada de carbono para diversos tipos de fretes
Com a Compensa API, o cálculo da pegada de carbono de seus fretes pode ser feita de maneira bem simples e direta.
Vamos começar entendendo como deve ser criado o payload de input, para depois entender a resposta que a API retorna.
⬆️ Montando o input de dados
A calculadora da Compensa aceita 30+ tipos diferentes de combinações de inputs para o payload do request. Para tal, temos algumas configurações a ser feitas:
Autenticação
O request para o endpoint de cálculo é autenticado. A autenticação deve ser feita com o JWT obtido como resposta do endpoint de autenticar usuário, nos headers da requisição:
headers = {
"Authorization": f"Bearer {token}"
}
Configurações iniciais
1. Abrangência do frete
A Compensa API permite que você faça o cálculo para fretes nacionais e internacionais. Esse configuração é feita no campo coverage
do payload.
2. Modal de transporte principal
Você pode calcular suas emissões com fretes realizados via modal Terrestre, Aéreo ou Marítimo.
Não sabe qual foi o modal utilizado?
Além disso, existe a opção "Modal desconhecido", em que a API usa uma heurística para determinar qual foi o modal utilizado, com base na distância percorrida e no tempo de entrega.
Esta configuração é feita no campo main_modal
do payload de entrada.
3. Modelo de contratação do frete
O cálculo também pode ser feito para fretes sob modelo Fracionado ou Dedicado.
Exceções:
- Para fretes aéreos, apenas o modelo fracionado está disponível.
- Já para fretes marítimos, os modelos disponíveis são Contêiner fracionado (LCL), Contêiner dedicado (FCL) ou Carga não-conteinerizada.
Esta configuração é realizada no campo contract_modal
do payload.
4. Dado disponível para o cálculo da distância
Uma parte importante do cálculo da pegada de carbono dos fretes é a distância percorrida no trajeto. Para tal, podem ser informados CEP de partida e destino, Cidade de partida e destino ou a distância percorrida em si.
Exceções:
- Para fretes marítimos, a opção "distância percorrida" não está disponível.
- Para fretes internacionais, não é possível informar os CEPs de partida e destino.
Esta configuração não é feita num campo específico do payload, mas sim nos campos de cada frete.
Tipos de payloads para a listagem de fretes
A Compensa API aceita como input um array de diferentes fretes, dada a mesma configuração de abrangência, modal de transporte e modelo de contratação.
Abaixo, estão listados todos os tipos de inputs aceitos na API. Os nomes dos inputs estão montados da seguinte forma:
FRETE <ABRANGÊNCIA> <MODAL> <MODELO DE CONTRATAÇÃO> COM <DADO PARA CÁLCULO DA DISTÂNCIA>
Vamos pegar um exemplo para esclarecer:
Exemplo de payload
FRETE_NACIONAL_MODALDESCONHECIDO_FRACIONADO_COMCIDADES:
coverage
:national
, pois o frete é nacionalmain_modal
:unknown
, pois o modal é desconhecidocontract_modal
:fractioned
, pois o modelo é fracionadodata
: array de fretes informando a cidade de partida e destino
O objeto data
tem os campos bem descritos para cada um dos 30+ tipos de inputs listados abaixo.
⬇️ Entendendo a resposta
A Compensa API calcula as emissões de diferentes gases de efeito estufa. São eles:
- CO2 - gás carbônico
- CH4 - metano
- N2O - óxido nitroso
- CO2 biogênico - relacionado ao ciclo natural do carbono
- CO2 equivalente (CO2e) - utilizado para compilar as emissões dos diferentes gases, com base no potencial de aquecimento global de cada um deles
Resposta sem erros - cálculo bem sucedido
Este é um objeto de resposta padrão:
{
"message": "the calculation was successful",
"modal": "land",
"coverage": "national",
"contract": "fractioned",
"emission": [
{
"input": {
"date": "2023-06-06",
"cep_origin": "70070080",
"cep_destination": "04602000",
"total_weight": 876,
"refrigerated_cargo": false,
"freight_goal": "Entrega para cliente",
"payment_modal": "FOB",
"own_or_outsourced": "terceiro",
"vehicle_type": ""
},
"distance": 1018,
"fuel_quantity": 35.04363214303802,
"fuel_type": "",
"first_mile": {
"emission_factor": {
"Name": "",
"Id": "",
"Category": "",
"Fuel": ""
},
"distance": 0,
"ttw_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"wtt_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"total_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"fuel_quantity": 0
},
"mid_mile": {
"emission_factor": {
"Name": "Caminhão - caminhão (média)",
"Id": "f26a1a0c5d9949abb00a79f0da375c27",
"Category": "land",
"Fuel": "Óleo Diesel (comercial)"
},
"distance": 1013.2,
"ttw_emission": {
"co2e": 81.154341192,
"co2": 79.85938648320001,
"ch4": 0.005325379200000001,
"n2o": 0.004437816000000001,
"co2_biogenic": 8.2871775984
},
"wtt_emission": {
"co2e": 19.808635497600005,
"co2": 15.7542468,
"ch4": 0.11982103200000001,
"n2o": 0.0026626896000000004,
"co2_biogenic": 0
},
"total_emission": {
"co2e": 100.96297668960001,
"co2": 95.61363328320002,
"ch4": 0.1251464112,
"n2o": 0.007100505600000001,
"co2_biogenic": 8.2871775984
},
"fuel_quantity": 34.08854545520845
},
"last_mile": {
"emission_factor": {
"Name": "Van - média (até 3,5 toneladas)",
"Id": "5ed6ad24b6074cfdb3049132ff9b93ce",
"Category": "land",
"Fuel": "Óleo Diesel (comercial)"
},
"distance": 4.8,
"ttw_emission": {
"co2e": 2.273766624,
"co2": 2.2374876095999996,
"ch4": 0.0001513728,
"n2o": 0.0001219392,
"co2_biogenic": 0.2321806464
},
"wtt_emission": {
"co2e": 0.5549957568,
"co2": 0.44140308480000007,
"ch4": 0.0033554304,
"n2o": 0.0000756864,
"co2_biogenic": 0
},
"total_emission": {
"co2e": 2.8287623807999998,
"co2": 2.6788906943999997,
"ch4": 0.0035068032000000002,
"n2o": 0.00019762559999999998,
"co2_biogenic": 0.2321806464
},
"fuel_quantity": 0.955086687829573
},
"total_emission": {
"co2e": 103.79173907040001,
"co2": 98.29252397760001,
"ch4": 0.1286532144,
"n2o": 0.007298131200000001,
"co2_biogenic": 8.5193582448
},
"scope": [
{
"scope": "Escopo 3",
"category": "Categoria 9",
"emission": {
"co2e": 103.79173907040001,
"co2": 98.29252397760001,
"ch4": 0.1286532144,
"n2o": 0.007298131200000001,
"co2_biogenic": 8.5193582448
}
}
],
"calculated": true,
"errors": {
"column": "",
"message": ""
}
}
]
}
Vamos entendê-lo, atributo a atributo.
message
: mensagem vinda da API. Se for diferente de "The calculation was successful.", houve erro de cálculo em algum dos fretes.modal
: modal informado no inputcoverage
: abragência informada no inputcontract
: modelo de contratação informado no inputemission
: lista de fretes calculadosinput
: input informado para este fretedistance
: distância total calculada, em kmfirst_mile
,mid_mile
,last_mile
: informa as emissões relativas a cada etapa do frete (first mile, mid mile e last mile). Inclui as distâncias percorridas em km, assim como as emissões well-to-tank, tank-to-wheel e totais dos diversos gases em kg.total_emission
: emissões totais de cada gás, em kgscope
: emissões discretizadas por escopo e categoria para cada gás, também em kgcalculated
: indica se o cálculo foi bem sucedido. Se não fortrue
, houve algum erro no cálculo.errors
: indica qual foi o erro obtido no cálculo. Se os campos estão vazios, não houve erros.
Resposta com erro no cálculo
{
"message": "the calculation was completed with errors",
"modal": "land",
"coverage": "national",
"contract": "fractioned",
"emission": [
{
"input": {
"date": "2023-06-06",
"cep_origin": "10101010",
"cep_destination": "04602000",
"total_weight": 876,
"refrigerated_cargo": false,
"freight_goal": "Entrega para cliente",
"payment_modal": "FOB",
"own_or_outsourced": "terceiro"
},
"distance": 0,
"fuel_quantity": 0,
"fuel_type": "",
"first_mile": {
"emission_factor": {
"Name": "",
"Id": "",
"Category": "",
"Fuel": ""
},
"distance": 0,
"ttw_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"wtt_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"total_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"fuel_quantity": 0
},
"mid_mile": {
"emission_factor": {
"Name": "",
"Id": "",
"Category": "",
"Fuel": ""
},
"distance": 0,
"ttw_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"wtt_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"total_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"fuel_quantity": 0
},
"last_mile": {
"emission_factor": {
"Name": "",
"Id": "",
"Category": "",
"Fuel": ""
},
"distance": 0,
"ttw_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"wtt_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"total_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"fuel_quantity": 0
},
"total_emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
},
"scope": [
{
"scope": "Escopo 3",
"category": "Categoria 9",
"emission": {
"co2e": 0,
"co2": 0,
"ch4": 0,
"n2o": 0,
"co2_biogenic": 0
}
}
],
"calculated": false,
"errors": {
"column": "route",
"message": "Route not available for informed locations"
}
}
]
}
Nota-se, na resposta com algum erro, que o frete em que houve o erro vem com quase todos os campos vazios ou zerados.
O atributo que indica com clareza se houve algum erro de cálculo para determinado frete é calculated
, que foi avaliado para false
por conta do erro encontrado no cálculo da rota entre os CEPs informados.
Se forem informados múltiplos fretes para realizar o cálculo simultaneamente, e algum deles apresentar algum erro, a mensagem informada será "The calculation was completed with errors.".