Gerar Relatório 2BSVS
Descrição: Gera um relatório 2BSVS (Biomass-Based Voluntary Sustainability) de forma síncrona. O relatório é processado por completo e retornado na mesma resposta HTTP. É utilizado para verificar a conformidade de propriedades rurais com critérios de sustentabilidade, incluindo análises de desmatamento, áreas de proteção permanente, reservas legais e outros indicadores ambientais.
Cada requisição bem-sucedida consome saldo do produto BSVS da cooperativa dona do token. A cooperativa precisa ter saldo previamente cadastrado — caso contrário, o relatório ainda é gerado, mas o débito é registrado com erro e precisa ser reconciliado manualmente.
Endpoint
Regras
| Atributos | Descrição | Tipo | Obrigatório |
|---|---|---|---|
| producer_name | Nome do produtor | String | Sim |
| producer_document | CPF ou CNPJ do produtor (com ou sem máscara) | String | Sim |
| cooperative_name | Nome da cooperativa emissora | String | Sim |
| username | E-mail/login do operador responsável (usado em auditoria) | String | Sim |
| name | Rótulo do relatório (aparece no histórico do backoffice) | String | Sim |
| layer | Camada de análise. Valores: SOY, CORN | Enum | Sim |
| civil_year | Ano civil de referência (ex: 2024) | Integer | Sim |
| harvest_code | Código da safra (ver seção específica abaixo) | Integer | Sim |
| cars | Lista de códigos CAR do produtor | Array | Recomendado |
| preserve_on_backoffice_history | Preservar no histórico do backoffice (default true) | Boolean | Não |
Exemplo de Requisição
- cURL
- Java
- JavaScript
- Python
- SDK Java
curl -X POST \
-H "Authorization: {SUA_API_KEY}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"producer_name": "João da Silva",
"producer_document": "39053344705",
"cooperative_name": "Cooperativa ABC",
"username": "operador@cooperativa.com.br",
"name": "2BSVS João da Silva - Safra 23/24",
"layer": "SOY",
"civil_year": 2024,
"harvest_code": 2324,
"cars": ["MT-5107925-7515B28AEE9240ACAB464D8DF624D470"]
}' \
"https://api.merx.tech/api/v1/integration/bsvs"
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
String body = "{\"producer_name\": \"João da Silva\", \"producer_document\": \"39053344705\", \"cooperative_name\": \"Cooperativa ABC\", \"username\": \"operador@cooperativa.com.br\", \"name\": \"2BSVS João da Silva - Safra 23/24\", \"layer\": \"SOY\", \"civil_year\": 2024, \"harvest_code\": 2324, \"cars\": [\"MT-5107925-7515B28AEE9240ACAB464D8DF624D470\"]}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.merx.tech/api/v1/integration/bsvs"))
.header("Authorization", "{SUA_API_KEY}")
.header("Accept", "application/json")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpClient client = HttpClient.newHttpClient();
try {
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
} catch (Exception e) {
e.printStackTrace();
}
const response = await fetch(
'https://api.merx.tech/api/v1/integration/bsvs',
{
method: 'POST',
headers: {
'Authorization': '{SUA_API_KEY}',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
producer_name: 'João da Silva',
producer_document: '39053344705',
cooperative_name: 'Cooperativa ABC',
username: 'operador@cooperativa.com.br',
name: '2BSVS João da Silva - Safra 23/24',
layer: 'SOY',
civil_year: 2024,
harvest_code: 2324,
cars: ['MT-5107925-7515B28AEE9240ACAB464D8DF624D470'],
}),
}
);
const data = await response.json();
console.log(data);
import requests
url = "https://api.merx.tech/api/v1/integration/bsvs"
headers = {
"Authorization": "{SUA_API_KEY}",
"Accept": "application/json",
"Content-Type": "application/json"
}
payload = {
"producer_name": "João da Silva",
"producer_document": "39053344705",
"cooperative_name": "Cooperativa ABC",
"username": "operador@cooperativa.com.br",
"name": "2BSVS João da Silva - Safra 23/24",
"layer": "SOY",
"civil_year": 2024,
"harvest_code": 2324,
"cars": ["MT-5107925-7515B28AEE9240ACAB464D8DF624D470"]
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
import com.merx.sdk.api.MerxClient;
import com.merx.sdk.core.Environment;
import com.merx.sdk.model.carbon.bsvs.BsvsReportRequest;
import com.merx.sdk.model.carbon.enums.Layer;
import java.util.List;
MerxClient merx = MerxClient.builder()
.apiKey("{SUA_API_KEY}")
.environment(Environment.SANDBOX)
.build();
var report = merx.bsvs().createReport(BsvsReportRequest.builder()
.producerName("Produtor Demo")
.producerDocument("12345678901")
.username("integration@cliente.com")
.name("Relatorio 2BSVS")
.layer(Layer.SOY)
.civilYear(2024)
.harvestCode(2324)
.cars(List.of("PR-1234567890"))
.build());
curl -X POST \
-H "Authorization: {SUA_API_KEY}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
"https://api.merx.tech/api/v1/integration/bsvs" \
--data '{
"producer_name": "João da Silva",
"producer_document": "39053344705",
"cooperative_name": "Cooperativa ABC",
"username": "operador@cooperativa.com.br",
"name": "2BSVS João da Silva - Safra 23/24",
"layer": "SOY",
"civil_year": 2024,
"harvest_code": 2324,
"cars": ["MT-5107925-7515B28AEE9240ACAB464D8DF624D470"]
}'
Parâmetros
Parâmetros de Cabeçalho
| Nome | Descrição | Tipo | Obrigatório |
|---|---|---|---|
| Authorization | Chave de API obtida via support-api@merx.tech (UUID cru, sem prefixo Bearer) | String | Sim |
| Content-Type | application/json | String | Sim |
Importante: não envie o header
cooperative-id. Ele é injetado automaticamente pelo API gateway (Kong + pluginmerx-custom-auth) resolvendo o owner do token. Qualquer valor enviado pelo cliente é ignorado ou sobrescrito.
Parâmetros do Corpo
| Nome | Descrição | Tipo | Obrigatório |
|---|---|---|---|
| producer_name | Nome do produtor | String | Sim |
| producer_document | CPF ou CNPJ do produtor (com ou sem pontuação) | String | Sim |
| cooperative_name | Nome da cooperativa emissora | String | Sim |
| username | E-mail/login do operador responsável (usado em auditoria) | String | Sim |
| name | Rótulo do relatório (aparece no histórico) | String | Sim |
| layer | Camada de análise. Valores: SOY, CORN | Enum | Sim |
| civil_year | Ano civil de referência | Integer | Sim |
| harvest_code | Código da safra (ver tabela abaixo) | Integer | Sim |
| cars | Lista de códigos CAR para análise | Array | Recomendado |
| preserve_on_backoffice_history | Preservar no histórico do backoffice (default true) | Boolean | Não |
Código da safra (harvest_code)
O harvest_code segue o formato AAAB, onde AAA são os três últimos dígitos do ano inicial e B é o último dígito do ano final da safra. Na prática: ano inicial com 2 dígitos + ano final com 2 dígitos.
Exemplo: 2324 representa a safra 2023/2024. Não envie 2024 (o ano civil sozinho), isso é motivo recorrente de erro 500 no backend.
Valores válidos atualmente cadastrados em homologação:
| layer | harvest_code | Descrição |
|---|---|---|
| SOY | 1819 | Safra 2018/2019 (soja) |
| SOY | 1920 | Safra 2019/2020 (soja) |
| SOY | 2021 | Safra 2020/2021 (soja) |
| SOY | 2122 | Safra 2021/2022 (soja) |
| SOY | 2223 | Safra 2022/2023 (soja) |
| SOY | 2324 | Safra 2023/2024 (soja) |
| SOY | 2425 | Safra 2024/2025 (soja) |
| CORN | 2122 | Safrinha 2022 (milho) |
| CORN | 2324 | Safrinha 2024 (milho) |
Dicionário de Dados da Resposta
| Nome | Descrição | Tipo |
|---|---|---|
| status | Status do processamento. Valores: PROCESSING, UPDATING_CAR, ERROR_UPDATING, GENERATING_REPORT, GENERATED, ERROR_TIMEOUT, ERROR | Enum |
| created_at | Data de criação do relatório (timestamp Unix em milissegundos) | Long |
| report_request_id | Identificador único do relatório gerado | UUID |
| cooperative_id | ID da cooperativa (injetado pelo gateway) | UUID |
| cooperative_name | Nome da cooperativa (ecoa o cooperative_name enviado) | String |
| layer | Camada de análise. Valores: SOY, CORN | Enum |
| civil_year | Ano civil de referência | Integer |
| harvest | Nome da safra no formato AAAA/AAAA (ex: "2023/2024") | String |
| error | Mensagem de erro, se houver (truncada em 500 caracteres) | String |
| producer_data | Dados do produtor | Object |
| producer_data.document | CPF ou CNPJ do produtor, sem máscara (ecoa o producer_document enviado) | String |
| producer_data.name | Nome do produtor (ecoa o producer_name enviado) | String |
| bsvs | Lista de resultados por CAR | Array |
| bsvs[].property_data | Dados da propriedade | Object |
| bsvs[].property_data.car | Código CAR | String |
| bsvs[].property_data.area | Área declarada do imóvel (ha) | Number |
| bsvs[].property_data.legal_reserve_area | Área de reserva legal do imóvel (ha) | Number |
| bsvs[].property_data.permanent_protection_area | Área de preservação permanente do imóvel (ha) | Number |
| bsvs[].property_data.consolidated_area | Área consolidada do imóvel (ha) | Number |
| bsvs[].property_data.mod_fiscais | Número de módulos fiscais do imóvel | Number |
| bsvs[].property_data.geometry | Geometria da propriedade (GeoJSON) | String |
| bsvs[].property_data.latitude | Latitude | Number |
| bsvs[].property_data.longitude | Longitude | Number |
| bsvs[].property_data.address | Localização do imóvel | Object |
| bsvs[].property_data.address.city | Município do imóvel | String |
| bsvs[].property_data.address.state | UF do imóvel | String |
| bsvs[].property_data.car_status | Status do CAR. Valores: AT, CA, SU, PE | Enum |
| bsvs[].property_data.car_status_updated_at | Data de atualização do status | Number (epoch s) |
| bsvs[].property_data.created_at | Data de criação do CAR na base do SICAR | Number (epoch s) |
| bsvs[].property_data.updated_at | Data da última atualização do CAR na base do SICAR | Number (epoch s) |
| bsvs[].car_declaration_sigef | Dados da declaração CAR/SIGEF | Object |
| bsvs[].car_declaration_sigef.declared_area | Área declarada | Number |
| bsvs[].car_declaration_sigef.legal_reserve_area | Área de reserva legal | Number |
| bsvs[].car_declaration_sigef.permanent_protection_area | Área de proteção permanente | Number |
| bsvs[].car_declaration_sigef.tax_modules | Módulos fiscais | Number |
| bsvs[].car_declaration_sigef.analysis_date | Data de análise | String |
| bsvs[].car_declaration_sigef.registration_date | Data de registro | String |
| bsvs[].car_declaration_sigef.rectification_date | Data de retificação | String |
| bsvs[].car_declaration_sigef.merx_updated_at | Data de atualização no Merx | Number (epoch s) |
| bsvs[].productivity | Dados de produtividade | Array |
| bsvs[].productivity[].crop | Cultura | String |
| bsvs[].productivity[].harvest | Safra | String |
| bsvs[].productivity[].planted_area | Área plantada | Number |
| bsvs[].productivity[].layer | Camada (SOY ou CORN) | Enum |
| bsvs[].productivity[].projected_productivity_year | Ano de referência da produtividade projetada | Integer |
| bsvs[].productivity[].projected_productivity | Produtividade projetada | Number |
| bsvs[].productivity[].estimated_total_annual_production_year | Ano de referência da produção total estimada | Integer |
| bsvs[].productivity[].estimated_total_annual_production | Produção total anual estimada | Number |
| bsvs[].bsvs_data_information | Informações específicas 2BSVS | Object |
| bsvs[].bsvs_data_information.conservation_unit_area | Área em unidade de conservação (ha) | Number |
| bsvs[].bsvs_data_information.conservation_unit_status | Status da unidade de conservação | Enum |
| bsvs[].bsvs_data_information.indigenous_area | Área indígena (ha) | Number |
| bsvs[].bsvs_data_information.indigenous_area_status | Status da área indígena | Enum |
| bsvs[].bsvs_data_information.quilombola_area | Área quilombola (ha) | Number |
| bsvs[].bsvs_data_information.quilombola_area_status | Status da área quilombola | Enum |
| bsvs[].bsvs_data_information.biomass_area | Área de biomassa (ha) | Number |
| bsvs[].bsvs_data_information.biomass_status | Aplicabilidade da biomassa. Valores: APLICAVEL, NAO_APLICAVEL, NAO_ENCONTRADO | Enum |
| bsvs[].bsvs_data_information.app_area | Área de APP (ha) | Number |
| bsvs[].bsvs_data_information.biomass_app_area | Área de biomassa em APP (ha) | Number |
| bsvs[].bsvs_data_information.biomass_app_status | Status da biomassa em APP | Enum |
| bsvs[].bsvs_data_information.accumulated_supression | Supressão acumulada (ha) | Number |
| bsvs[].bsvs_data_information.biomass_supression_area | Área de biomassa em supressão (ha) | Number |
| bsvs[].bsvs_data_information.biomass_supression_status | Status da biomassa em supressão | Enum |
| bsvs[].bsvs_data_information.production_ton_area_biomass_supression | Produção estimada na área de biomassa em supressão (t) | Number |
| bsvs[].bsvs_data_information.percent_area_biomass_supression | Percentual da biomassa em área de supressão (%) | Number |
| bsvs[].bsvs_data_information.biomass_no_supression_area | Área de biomassa fora de supressão (ha) | Number |
| bsvs[].bsvs_data_information.biomass_no_supression_status | Status da biomassa fora de supressão | Enum |
| bsvs[].bsvs_data_information.production_ton_biomass_area_no_supression | Produção estimada na área de biomassa fora de supressão (t) | Number |
| bsvs[].bsvs_data_information.percent_biomass_area_no_supression | Percentual da biomassa fora de área de supressão (%) | Number |
| bsvs[].bsvs_data_information.biomass_supression_eligibility | Elegibilidade da supressão de biomassa. Valores: ELEGIVEL, NAO_ELEGIVEL, NAO_APLICAVEL, PARCIAL, NAO_ENCONTRADO | Enum |
| bsvs[].bsvs_data_information.biomass_total_production | Produção total de biomassa (t) | Number |
| bsvs[].bsvs_data_information.geometries | Geometrias relacionadas (supressão acumulada, área de soja/milho da safra, soja/milho em supressão acumulada, APP, terras indígenas, unidades de conservação, áreas quilombolas) | Array |
| bsvs[].bsvs_data_information.geometries[].geometry_type | Tipo de geometria | Enum |
| bsvs[].bsvs_data_information.geometries[].color | Cor sugerida para renderização da camada (hexadecimal) | String |
| bsvs[].bsvs_data_information.geometries[].geo_json | Geometria em formato GeoJSON | String |
| bsvs[].bsvs_data_information.geometries[].subtitle | Legenda da geometria | String |
| bsvs[].layer_esg_data | Dados de camadas ESG (UC, terras indígenas e áreas quilombolas) | Array |
| bsvs[].layer_esg_data[].layer_esg_enum | Identificador da camada/tipo de embargo (ex: UNIDADE_CONSERVACAO, TERRAS_INDIGENAS_SIRGAS, AREAS_QUILOMBOLAS) | String |
| bsvs[].layer_esg_data[].layer_name | Nome da camada | String |
| bsvs[].layer_esg_data[].layer_color | Cor da camada (hexadecimal) | String |
| bsvs[].layer_esg_data[].layer_question | Pergunta associada à camada | String |
| bsvs[].layer_esg_data[].layer_updated_at | Data da última atualização da camada na base | Number (epoch s) |
| bsvs[].layer_esg_data[].esg_status | Status ESG. Valores: CONFORME, NAO_CONFORME, NAO_ENCONTRADO, PROCESSANDO | Enum |
| bsvs[].layer_esg_data[].total_area | Área total sobreposta (ha) | Number |
| bsvs[].layer_esg_data[].total_issues | Total de apontamentos | Integer |
| bsvs[].layer_esg_data[].layer_columns | Nomes das colunas correspondentes a cada posição de items[].item_values | Array |
| bsvs[].layer_esg_data[].items | Apontamentos encontrados na camada | Array |
| bsvs[].layer_esg_data[].items[].item_values | Valores do apontamento, na ordem de layer_columns | Array |
| bsvs[].layer_esg_data[].geometries | Geometrias dos apontamentos da camada | Array |
| bsvs[].layer_esg_data[].geometries[].geo_json | Geometria em formato GeoJSON | String |
| bsvs[].layer_esg_data[].geometries[].centroid | Centróide da geometria | String |
| bsvs[].layer_esg_data[].geometries[].latitude | Latitude do centróide | Number |
| bsvs[].layer_esg_data[].geometries[].longitude | Longitude do centróide | Number |
| bsvs[].layer_esg_data[].geometries[].area | Área da geometria (ha) | Number |
| bsvs[].layer_esg_data[].eu_deforestation_layer | Indica se a camada é considerada camada de desmatamento para EUDR | Boolean |
| bsvs[].layer_esg_data[].source_link | Link da fonte oficial do dado da camada | String |
| bsvs[].environmental_protection_layers | Camadas de proteção ambiental (visão consolidada de UC, terras indígenas e áreas quilombolas) | Array |
| bsvs[].environmental_protection_layers[].environmental_protection_layer_enum | Identificador da camada. Valores: UNIDADE_CONSERVACAO, TERRAS_INDIGENAS, BIOMASSA_EM_APP, AREAS_QUILOMBOLA | Enum |
| bsvs[].environmental_protection_layers[].layer_name | Nome da camada | String |
| bsvs[].environmental_protection_layers[].total_area | Área total sobreposta (ha) | Number |
| bsvs[].environmental_protection_layers[].total_issues | Total de apontamentos | Integer |
| bsvs[].environmental_protection_layers[].layer_updated_at | Data da última atualização da camada na base | Number (epoch s) |
| bsvs[].environmental_protection_layers[].environmental_protection_status | Status de proteção ambiental. Valores: CONFORME, NAO_CONFORME | Enum |
| bsvs[].environmental_protection_layers[].source_link | Link da fonte oficial do dado da camada | String |
| bsvs[].permanent_protection_areas | Áreas de proteção permanente | Array |
| bsvs[].permanent_protection_areas[].area | Área em hectares | Number |
| bsvs[].permanent_protection_areas[].city | Cidade | String |
| bsvs[].permanent_protection_areas[].state | Estado | String |
| bsvs[].permanent_protection_areas[].description | Descrição | String |
Valores de Enums
Status de conformidade 2BSVS
Aplica-se a conservation_unit_status, indigenous_area_status, quilombola_area_status, biomass_app_status, biomass_supression_status e biomass_no_supression_status.
| Valor | Descrição |
|---|---|
| CONFORME | Propriedade em conformidade |
| NAO_CONFORME | Propriedade não conforme |
| NAO_APLICAVEL | Não aplicável |
| NAO_ELEGIVEL | Não elegível |
| ELEGIVEL | Elegível |
| NAO_ENCONTRADO | Não encontrado |
Aplicabilidade (biomass_status)
| Valor | Descrição |
|---|---|
| APLICAVEL | Há biomassa apurada para a safra |
| NAO_APLICAVEL | Não aplicável |
| NAO_ENCONTRADO | Não encontrado |
Elegibilidade (biomass_supression_eligibility)
| Valor | Descrição |
|---|---|
| ELEGIVEL | Elegível |
| NAO_ELEGIVEL | Não elegível |
| PARCIAL | Parcialmente elegível |
| NAO_APLICAVEL | Não aplicável |
| NAO_ENCONTRADO | Não encontrado |
Status CAR
| Valor | Descrição |
|---|---|
| AT | Ativo |
| CA | Cancelado |
| SU | Suspenso |
| PE | Pendente |
Layer (Camada)
| Valor | Descrição |
|---|---|
| SOY | Soja |
| CORN | Milho |
Geometry Type (bsvs_data_information.geometries[].geometry_type)
| Valor | Descrição |
|---|---|
| SUPRESSED_AREA | Área de supressão acumulada |
| SOY_AREA | Área de soja da safra |
| CORN_AREA | Área de milho da safra |
| SOY_IN_ACCUMULATED_SUPPRESSION_AREA | Área de soja em supressão acumulada |
| CORN_IN_ACCUMULATED_SUPPRESSION_AREA | Área de milho em supressão acumulada |
| PERMANENT_PROTECTION_AREA | Área de preservação permanente |
| INDIGENOUS_AREA | Terras indígenas (FUNAI) |
| CONSERVATION_UNIT_AREA | Unidades de conservação (ICMBio) |
| QUILOMBOLA_AREA | Populações tradicionais / áreas quilombolas (INCRA) |
Respostas
- 200 - Ok
{
"status": "GENERATED",
"created_at": 1711564200000,
"report_request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"cooperative_id": "12345678-1234-1234-1234-123456789012",
"cooperative_name": "Cooperativa ABC",
"layer": "SOY",
"civil_year": 2024,
"harvest": "2023/2024",
"producer_data": {
"document": "39053344705",
"name": "João da Silva"
},
"bsvs": [
{
"property_data": {
"car": "MT-5107925-7515B28AEE9240ACAB464D8DF624D470",
"area": 500.5,
"legal_reserve_area": 100.1,
"permanent_protection_area": 25.25,
"consolidated_area": 320.15,
"mod_fiscais": 5.5,
"geometry": "{\"type\":\"MultiPolygon\",\"coordinates\":[...]}",
"latitude": -15.456,
"longitude": -55.123,
"address": {
"city": "Sorriso",
"state": "MT"
},
"car_status": "AT",
"car_status_updated_at": 1.7048448E9,
"created_at": 1.5921792E9,
"updated_at": 1.7052768E9
},
"car_declaration_sigef": {
"declared_area": 500.5,
"legal_reserve_area": 100.1,
"permanent_protection_area": 25.25,
"tax_modules": 5.5,
"analysis_date": "2024-01-01",
"registration_date": "2020-06-15",
"rectification_date": "2023-08-22",
"merx_updated_at": 1.7053146E9
},
"productivity": [
{
"crop": "Soja",
"harvest": "2023/2024",
"planted_area": 350.0,
"layer": "SOY",
"projected_productivity_year": 2024,
"projected_productivity": 60.0,
"estimated_total_annual_production_year": 2024,
"estimated_total_annual_production": 21000.0
}
],
"bsvs_data_information": {
"conservation_unit_area": 0.0,
"conservation_unit_status": "CONFORME",
"indigenous_area": 0.0,
"indigenous_area_status": "CONFORME",
"quilombola_area": 0.0,
"quilombola_area_status": "CONFORME",
"biomass_area": 125.35,
"biomass_status": "APLICAVEL",
"app_area": 25.25,
"biomass_app_area": 0.0,
"biomass_app_status": "CONFORME",
"accumulated_supression": 0.0,
"biomass_supression_area": 0.0,
"biomass_supression_status": "CONFORME",
"production_ton_area_biomass_supression": 0.0,
"percent_area_biomass_supression": 0.0,
"biomass_no_supression_area": 125.35,
"biomass_no_supression_status": "CONFORME",
"production_ton_biomass_area_no_supression": 21000.0,
"percent_biomass_area_no_supression": 100.0,
"biomass_supression_eligibility": "ELEGIVEL",
"biomass_total_production": 21000.0,
"geometries": [
{
"geometry_type": "SUPRESSED_AREA",
"color": "#DE762D",
"geo_json": "{\"type\":\"Polygon\",\"coordinates\":[...]}",
"subtitle": "Supressão acumulada 2008/2024"
},
{
"geometry_type": "SOY_AREA",
"color": "#00A667",
"geo_json": "{\"type\":\"Polygon\",\"coordinates\":[...]}",
"subtitle": "Área de Soja 2023/2024"
}
]
},
"layer_esg_data": [
{
"layer_esg_enum": "UNIDADE_CONSERVACAO",
"layer_name": "ICMBIO - UNIDADES DE CONSERVAÇÃO",
"layer_color": "#DF94C3",
"layer_updated_at": 1.7067456E9,
"esg_status": "CONFORME",
"total_area": 0.0,
"total_issues": 0,
"layer_columns": ["Nome", "Sigla", "Categoria", "Cidade", "Estado", "Área (ha)", "Bioma"],
"items": [],
"geometries": [],
"eu_deforestation_layer": false,
"source_link": "https://www.gov.br/icmbio"
}
],
"environmental_protection_layers": [
{
"environmental_protection_layer_enum": "UNIDADE_CONSERVACAO",
"layer_name": "ICMBIO - UNIDADES DE CONSERVAÇÃO",
"total_area": 0.0,
"total_issues": 0,
"layer_updated_at": 1.7067456E9,
"environmental_protection_status": "CONFORME",
"source_link": "https://www.gov.br/icmbio"
}
],
"permanent_protection_areas": []
}
]
}
- 400 - Bad Request
{
"timestamp": "2026-03-11T14:30:00Z",
"status": 400,
"error": "cooperative_name is required"
}
- 401 - Unauthorized
Token ausente ou inválido.
- 500 - Internal Server Error
Erro interno. Causas conhecidas: harvest_code sem cadastro para a layer informada, cars ausente/vazio (bug latente) ou CPF/CNPJ em formato inválido.
Erros comuns
| Sintoma | Causa provável | Como resolver |
|---|---|---|
401 Unauthorized | Header Authorization ausente ou com prefixo Bearer | Enviar o token UUID cru, sem o prefixo Bearer |
400 Bad Request com name is required / username is required / cooperative_name is required | Campos obrigatórios do body não enviados | Preencher name, username e cooperative_name sempre |
500 Internal Server Error após poucos milissegundos | harvest_code enviado como ano civil (2024) em vez de código da safra (2324) | Consultar a tabela de harvest_code válidos acima |
500 Internal Server Error com stacktrace de NullPointerException no carbon-api | cars ausente ou vazio | Enviar sempre pelo menos um CAR no array cars |
500 Internal Server Error citando CPF/CNPJ | Documento em formato inválido | Verificar o producer_document (aceita com ou sem máscara, mas precisa ser um CPF/CNPJ válido) |