Skip to main content

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

Exemplo de Requisição
curl -X POST \
-H "Authorization: [[apiKey]]" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
"https://homolog.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
AuthorizationToken de autenticação (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: GENERATED, PROCESSING, 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 cooperativaString
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 houverString
producer_dataDados do produtorObject
producer_data.producer_idID do produtorUUID
producer_data.documentDocumento do produtorString
producer_data.nameNome do produtorString
producer_data.dap_codeCódigo DAPString
producer_data.caf_codeCódigo CAFString
producer_data.ricaf_codeCódigo RICAFString
bsvsLista de resultados por CARArray
bsvs[].property_dataDados da propriedadeObject
bsvs[].property_data.farm_nameNome da fazendaString
bsvs[].property_data.carCódigo CARString
bsvs[].property_data.areaÁrea do imóvel (ha)Number
bsvs[].property_data.geometryGeometria da propriedade (GeoJSON)String
bsvs[].property_data.centroidCentróide da propriedadeString
bsvs[].property_data.latitudeLatitudeNumber
bsvs[].property_data.longitudeLongitudeNumber
bsvs[].property_data.car_statusStatus do CAR. Valores: AT, CA, SU, PEEnum
bsvs[].property_data.car_status_updated_atData de atualização do statusDateTime
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[].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_productivityProdutividade projetadaNumber
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çãoNumber
bsvs[].bsvs_data_information.conservation_unit_statusStatus da unidade de conservaçãoEnum
bsvs[].bsvs_data_information.indigenous_areaÁrea indígenaNumber
bsvs[].bsvs_data_information.indigenous_area_statusStatus da área indígenaEnum
bsvs[].bsvs_data_information.quilombola_areaÁrea quilombolaNumber
bsvs[].bsvs_data_information.quilombola_area_statusStatus da área quilombolaEnum
bsvs[].bsvs_data_information.biomass_areaÁrea de biomassaNumber
bsvs[].bsvs_data_information.biomass_statusStatus da biomassaEnum
bsvs[].bsvs_data_information.app_areaÁrea de APPNumber
bsvs[].bsvs_data_information.biomass_app_areaÁrea de biomassa em APPNumber
bsvs[].bsvs_data_information.biomass_app_statusStatus da biomassa em APPEnum
bsvs[].bsvs_data_information.accumulated_supressionSupressão acumuladaNumber
bsvs[].bsvs_data_information.biomass_supression_areaÁrea de supressão de biomassaNumber
bsvs[].bsvs_data_information.biomass_supression_statusStatus da supressão de biomassaEnum
bsvs[].bsvs_data_information.biomass_supression_eligibilityElegibilidade da supressão de biomassaEnum
bsvs[].bsvs_data_information.biomass_total_productionProdução total de biomassaNumber
bsvs[].layer_esg_dataDados de camadas ESGArray
bsvs[].layer_esg_data[].embargo_typeTipo de embargoString
bsvs[].layer_esg_data[].layer_nameNome da camadaString
bsvs[].layer_esg_data[].esg_statusStatus ESGEnum
bsvs[].layer_esg_data[].total_areaÁrea totalNumber
bsvs[].layer_esg_data[].total_issuesTotal de apontamentosInteger
bsvs[].environmental_protection_layersCamadas de proteção ambientalArray
bsvs[].environmental_protection_layers[].layer_nameNome da camadaString
bsvs[].environmental_protection_layers[].total_areaÁrea totalNumber
bsvs[].environmental_protection_layers[].total_issuesTotal de apontamentosInteger
bsvs[].environmental_protection_layers[].environmental_protection_statusStatus de proteção ambientalEnum
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 2BSVS

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

Status CAR

ValorDescrição
ATAtivo
CACancelado
SUSuspenso
PEPendente

Layer (Camada)

ValorDescrição
SOYSoja
CORNMilho

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",
"error": null,
"producer_data": {
"producer_id": "b2c3d4e5-f678-9012-abcd-ef3456789012",
"document": "39053344705",
"name": "João da Silva",
"dap_code": null,
"caf_code": null,
"ricaf_code": null
},
"bsvs": [
{
"property_data": {
"farm_name": "Fazenda São José",
"car": "MT-5107925-7515B28AEE9240ACAB464D8DF624D470",
"area": 500.50,
"geometry": "{...}",
"centroid": "POINT(-55.123 -15.456)",
"latitude": -15.456,
"longitude": -55.123,
"car_status": "AT",
"car_status_updated_at": "2024-01-10T00:00:00Z"
},
"car_declaration_sigef": {
"declared_area": 500.50,
"legal_reserve_area": 100.10,
"permanent_protection_area": 25.25,
"tax_modules": 5.5,
"analysis_date": "2024-01-01",
"registration_date": "2020-06-15",
"rectification_date": null
},
"productivity": [
{
"crop": "Soja",
"harvest": "2023/2024",
"planted_area": 350.00,
"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",
"biomass_supression_eligibility": "ELEGIVEL",
"biomass_total_production": 21000.0
},
"layer_esg_data": [
{
"embargo_type": "EMBARGOS_IBAMA",
"layer_name": "IBAMA - EMBARGOS",
"esg_status": "CONFORME",
"total_area": 0.0,
"total_issues": 0
}
],
"environmental_protection_layers": [
{
"layer_name": "Unidades de Conservação",
"total_area": 0.0,
"total_issues": 0,
"environmental_protection_status": "CONFORME"
}
],
"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)