Pular para o conteúdo principal

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

POST/api/v1/integration/bsvs

Regras

AtributosDescriçãoTipoObrigatório
producer_nameNome do produtorStringSim
producer_documentCPF ou CNPJ do produtor (com ou sem máscara)StringSim
cooperative_nameNome da cooperativa emissoraStringSim
usernameE-mail/login do operador responsável (usado em auditoria)StringSim
nameRótulo do relatório (aparece no histórico do backoffice)StringSim
layerCamada de análise. Valores: SOY, CORNEnumSim
civil_yearAno civil de referência (ex: 2024)IntegerSim
harvest_codeCódigo da safra (ver seção específica abaixo)IntegerSim
carsLista de códigos CAR do produtorArrayRecomendado
preserve_on_backoffice_historyPreservar no histórico do backoffice (default true)BooleanNão

Exemplo de Requisição

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"
Exemplo de Requisição (cURL legado)
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

NomeDescriçãoTipoObrigatório
AuthorizationChave de API obtida via support-api@merx.tech (UUID cru, sem prefixo Bearer)StringSim
Content-Typeapplication/jsonStringSim

Importante: não envie o header cooperative-id. Ele é injetado automaticamente pelo API gateway (Kong + plugin merx-custom-auth) resolvendo o owner do token. Qualquer valor enviado pelo cliente é ignorado ou sobrescrito.

Parâmetros do Corpo

NomeDescriçãoTipoObrigatório
producer_nameNome do produtorStringSim
producer_documentCPF ou CNPJ do produtor (com ou sem pontuação)StringSim
cooperative_nameNome da cooperativa emissoraStringSim
usernameE-mail/login do operador responsável (usado em auditoria)StringSim
nameRótulo do relatório (aparece no histórico)StringSim
layerCamada de análise. Valores: SOY, CORNEnumSim
civil_yearAno civil de referênciaIntegerSim
harvest_codeCódigo da safra (ver tabela abaixo)IntegerSim
carsLista de códigos CAR para análiseArrayRecomendado
preserve_on_backoffice_historyPreservar no histórico do backoffice (default true)BooleanNã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:

layerharvest_codeDescrição
SOY1819Safra 2018/2019 (soja)
SOY1920Safra 2019/2020 (soja)
SOY2021Safra 2020/2021 (soja)
SOY2122Safra 2021/2022 (soja)
SOY2223Safra 2022/2023 (soja)
SOY2324Safra 2023/2024 (soja)
SOY2425Safra 2024/2025 (soja)
CORN2122Safrinha 2022 (milho)
CORN2324Safrinha 2024 (milho)

Dicionário de Dados da Resposta

NomeDescriçãoTipo
statusStatus do processamento. Valores: PROCESSING, UPDATING_CAR, ERROR_UPDATING, GENERATING_REPORT, GENERATED, ERROR_TIMEOUT, ERROREnum
created_atData de criação do relatório (timestamp Unix em milissegundos)Long
report_request_idIdentificador único do relatório geradoUUID
cooperative_idID da cooperativa (injetado pelo gateway)UUID
cooperative_nameNome da cooperativa (ecoa o cooperative_name enviado)String
layerCamada de análise. Valores: SOY, CORNEnum
civil_yearAno civil de referênciaInteger
harvestNome da safra no formato AAAA/AAAA (ex: "2023/2024")String
errorMensagem de erro, se houver (truncada em 500 caracteres)String
producer_dataDados do produtorObject
producer_data.documentCPF ou CNPJ do produtor, sem máscara (ecoa o producer_document enviado)String
producer_data.nameNome do produtor (ecoa o producer_name enviado)String
bsvsLista de resultados por CARArray
bsvs[].property_dataDados da propriedadeObject
bsvs[].property_data.carCódigo CARString
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_fiscaisNúmero de módulos fiscais do imóvelNumber
bsvs[].property_data.geometryGeometria da propriedade (GeoJSON)String
bsvs[].property_data.latitudeLatitudeNumber
bsvs[].property_data.longitudeLongitudeNumber
bsvs[].property_data.addressLocalização do imóvelObject
bsvs[].property_data.address.cityMunicípio do imóvelString
bsvs[].property_data.address.stateUF do imóvelString
bsvs[].property_data.car_statusStatus do CAR. Valores: AT, CA, SU, PEEnum
bsvs[].property_data.car_status_updated_atData de atualização do statusNumber (epoch s)
bsvs[].property_data.created_atData de criação do CAR na base do SICARNumber (epoch s)
bsvs[].property_data.updated_atData da última atualização do CAR na base do SICARNumber (epoch s)
bsvs[].car_declaration_sigefDados da declaração CAR/SIGEFObject
bsvs[].car_declaration_sigef.declared_areaÁrea declaradaNumber
bsvs[].car_declaration_sigef.legal_reserve_areaÁrea de reserva legalNumber
bsvs[].car_declaration_sigef.permanent_protection_areaÁrea de proteção permanenteNumber
bsvs[].car_declaration_sigef.tax_modulesMódulos fiscaisNumber
bsvs[].car_declaration_sigef.analysis_dateData de análiseString
bsvs[].car_declaration_sigef.registration_dateData de registroString
bsvs[].car_declaration_sigef.rectification_dateData de retificaçãoString
bsvs[].car_declaration_sigef.merx_updated_atData de atualização no MerxNumber (epoch s)
bsvs[].productivityDados de produtividadeArray
bsvs[].productivity[].cropCulturaString
bsvs[].productivity[].harvestSafraString
bsvs[].productivity[].planted_areaÁrea plantadaNumber
bsvs[].productivity[].layerCamada (SOY ou CORN)Enum
bsvs[].productivity[].projected_productivity_yearAno de referência da produtividade projetadaInteger
bsvs[].productivity[].projected_productivityProdutividade projetadaNumber
bsvs[].productivity[].estimated_total_annual_production_yearAno de referência da produção total estimadaInteger
bsvs[].productivity[].estimated_total_annual_productionProdução total anual estimadaNumber
bsvs[].bsvs_data_informationInformações específicas 2BSVSObject
bsvs[].bsvs_data_information.conservation_unit_areaÁrea em unidade de conservação (ha)Number
bsvs[].bsvs_data_information.conservation_unit_statusStatus da unidade de conservaçãoEnum
bsvs[].bsvs_data_information.indigenous_areaÁrea indígena (ha)Number
bsvs[].bsvs_data_information.indigenous_area_statusStatus da área indígenaEnum
bsvs[].bsvs_data_information.quilombola_areaÁrea quilombola (ha)Number
bsvs[].bsvs_data_information.quilombola_area_statusStatus da área quilombolaEnum
bsvs[].bsvs_data_information.biomass_areaÁrea de biomassa (ha)Number
bsvs[].bsvs_data_information.biomass_statusAplicabilidade da biomassa. Valores: APLICAVEL, NAO_APLICAVEL, NAO_ENCONTRADOEnum
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_statusStatus da biomassa em APPEnum
bsvs[].bsvs_data_information.accumulated_supressionSupressã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_statusStatus da biomassa em supressãoEnum
bsvs[].bsvs_data_information.production_ton_area_biomass_supressionProdução estimada na área de biomassa em supressão (t)Number
bsvs[].bsvs_data_information.percent_area_biomass_supressionPercentual 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_statusStatus da biomassa fora de supressãoEnum
bsvs[].bsvs_data_information.production_ton_biomass_area_no_supressionProdução estimada na área de biomassa fora de supressão (t)Number
bsvs[].bsvs_data_information.percent_biomass_area_no_supressionPercentual da biomassa fora de área de supressão (%)Number
bsvs[].bsvs_data_information.biomass_supression_eligibilityElegibilidade da supressão de biomassa. Valores: ELEGIVEL, NAO_ELEGIVEL, NAO_APLICAVEL, PARCIAL, NAO_ENCONTRADOEnum
bsvs[].bsvs_data_information.biomass_total_productionProdução total de biomassa (t)Number
bsvs[].bsvs_data_information.geometriesGeometrias 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_typeTipo de geometriaEnum
bsvs[].bsvs_data_information.geometries[].colorCor sugerida para renderização da camada (hexadecimal)String
bsvs[].bsvs_data_information.geometries[].geo_jsonGeometria em formato GeoJSONString
bsvs[].bsvs_data_information.geometries[].subtitleLegenda da geometriaString
bsvs[].layer_esg_dataDados de camadas ESG (UC, terras indígenas e áreas quilombolas)Array
bsvs[].layer_esg_data[].layer_esg_enumIdentificador da camada/tipo de embargo (ex: UNIDADE_CONSERVACAO, TERRAS_INDIGENAS_SIRGAS, AREAS_QUILOMBOLAS)String
bsvs[].layer_esg_data[].layer_nameNome da camadaString
bsvs[].layer_esg_data[].layer_colorCor da camada (hexadecimal)String
bsvs[].layer_esg_data[].layer_questionPergunta associada à camadaString
bsvs[].layer_esg_data[].layer_updated_atData da última atualização da camada na baseNumber (epoch s)
bsvs[].layer_esg_data[].esg_statusStatus ESG. Valores: CONFORME, NAO_CONFORME, NAO_ENCONTRADO, PROCESSANDOEnum
bsvs[].layer_esg_data[].total_areaÁrea total sobreposta (ha)Number
bsvs[].layer_esg_data[].total_issuesTotal de apontamentosInteger
bsvs[].layer_esg_data[].layer_columnsNomes das colunas correspondentes a cada posição de items[].item_valuesArray
bsvs[].layer_esg_data[].itemsApontamentos encontrados na camadaArray
bsvs[].layer_esg_data[].items[].item_valuesValores do apontamento, na ordem de layer_columnsArray
bsvs[].layer_esg_data[].geometriesGeometrias dos apontamentos da camadaArray
bsvs[].layer_esg_data[].geometries[].geo_jsonGeometria em formato GeoJSONString
bsvs[].layer_esg_data[].geometries[].centroidCentróide da geometriaString
bsvs[].layer_esg_data[].geometries[].latitudeLatitude do centróideNumber
bsvs[].layer_esg_data[].geometries[].longitudeLongitude do centróideNumber
bsvs[].layer_esg_data[].geometries[].areaÁrea da geometria (ha)Number
bsvs[].layer_esg_data[].eu_deforestation_layerIndica se a camada é considerada camada de desmatamento para EUDRBoolean
bsvs[].layer_esg_data[].source_linkLink da fonte oficial do dado da camadaString
bsvs[].environmental_protection_layersCamadas de proteção ambiental (visão consolidada de UC, terras indígenas e áreas quilombolas)Array
bsvs[].environmental_protection_layers[].environmental_protection_layer_enumIdentificador da camada. Valores: UNIDADE_CONSERVACAO, TERRAS_INDIGENAS, BIOMASSA_EM_APP, AREAS_QUILOMBOLAEnum
bsvs[].environmental_protection_layers[].layer_nameNome da camadaString
bsvs[].environmental_protection_layers[].total_areaÁrea total sobreposta (ha)Number
bsvs[].environmental_protection_layers[].total_issuesTotal de apontamentosInteger
bsvs[].environmental_protection_layers[].layer_updated_atData da última atualização da camada na baseNumber (epoch s)
bsvs[].environmental_protection_layers[].environmental_protection_statusStatus de proteção ambiental. Valores: CONFORME, NAO_CONFORMEEnum
bsvs[].environmental_protection_layers[].source_linkLink da fonte oficial do dado da camadaString
bsvs[].permanent_protection_areasÁreas de proteção permanenteArray
bsvs[].permanent_protection_areas[].areaÁrea em hectaresNumber
bsvs[].permanent_protection_areas[].cityCidadeString
bsvs[].permanent_protection_areas[].stateEstadoString
bsvs[].permanent_protection_areas[].descriptionDescriçãoString

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.

ValorDescrição
CONFORMEPropriedade em conformidade
NAO_CONFORMEPropriedade não conforme
NAO_APLICAVELNão aplicável
NAO_ELEGIVELNão elegível
ELEGIVELElegível
NAO_ENCONTRADONão encontrado

Aplicabilidade (biomass_status)

ValorDescrição
APLICAVELHá biomassa apurada para a safra
NAO_APLICAVELNão aplicável
NAO_ENCONTRADONão encontrado

Elegibilidade (biomass_supression_eligibility)

ValorDescrição
ELEGIVELElegível
NAO_ELEGIVELNão elegível
PARCIALParcialmente elegível
NAO_APLICAVELNão aplicável
NAO_ENCONTRADONão encontrado

Status CAR

ValorDescrição
ATAtivo
CACancelado
SUSuspenso
PEPendente

Layer (Camada)

ValorDescrição
SOYSoja
CORNMilho

Geometry Type (bsvs_data_information.geometries[].geometry_type)

ValorDescriçã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_AREATerras indígenas (FUNAI)
CONSERVATION_UNIT_AREAUnidades de conservação (ICMBio)
QUILOMBOLA_AREAPopulaçõ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

SintomaCausa provávelComo resolver
401 UnauthorizedHeader Authorization ausente ou com prefixo BearerEnviar o token UUID cru, sem o prefixo Bearer
400 Bad Request com name is required / username is required / cooperative_name is requiredCampos obrigatórios do body não enviadosPreencher name, username e cooperative_name sempre
500 Internal Server Error após poucos milissegundosharvest_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-apicars ausente ou vazioEnviar sempre pelo menos um CAR no array cars
500 Internal Server Error citando CPF/CNPJDocumento em formato inválidoVerificar o producer_document (aceita com ou sem máscara, mas precisa ser um CPF/CNPJ válido)