ConsultaController
Consulta os dados consolidados da safra e gera o relatório de compliance/DDS. A rota permanece com a grafia complaince, pois esse é o caminho exposto pelo backend.
Todas as requisições exigem X-API-ACCESS-KEY e X-API-SECRET-KEY.
GET /complaince/dds/{idSafra}
Gera o DDS da safra usando a última validação registrada para a safra e a API Key autenticada. É necessário executar uma validação antes de chamar essa rota.
curl --request GET \
--url https://<url>/complaince/dds/<id_safra> \
--header 'X-API-ACCESS-KEY: <chave_de_acesso>' \
--header 'X-API-SECRET-KEY: <chave_de_seguranca>'
O retorno é um objeto DDS. Os campos preenchidos pela implementação atual são dds_reference (código da safra), operator, producers, legal_compliance, deforestation_free_declaration quando aplicável e submission_date. consignment, risk_assessment e traceability ainda podem retornar null.
{
"dds_reference": "<codigo_safra>",
"operator": {
"operator_id": "<access_key>",
"name": "<nome_api_key>",
"registration_number": "<registro>",
"EORI_number": "<eori>",
"address": {
"street": "<endereco>",
"city": "<cidade>",
"state": "<estado>",
"postcode": "<cep>",
"country": "<pais>"
},
"contact": {
"email": "<email>",
"phone": "<telefone>"
}
},
"consignment": null,
"producers": [
{
"producer_id": "BR<identificador_receita>",
"name": "<nome_produtor>",
"country": "Brazil",
"lote_id": "<codigo_safra>",
"plots": [
{
"plot_id": "<id_plano_cultivo>",
"geometry": {
"type": "Polygon",
"coordinates": [[[-46.6333, -23.5500], [-46.6333, -23.5600]]]
},
"area_ha": 0.0
}
]
}
],
"legal_compliance": {
"country_production_law_reference": "Lei Florestal Brasileira (Lei Nº 12.651/2012).",
"permits_for_land_use_change": "Not applicable",
"permission_for_export": null
},
"deforestation_free_declaration": null,
"risk_assessment": null,
"traceability": null,
"submission_date": "2026-01-15"
}
Os dados de operator são montados a partir dos campos da API Key (accessKey, nome, registro, eori, endereço e contato). Os produtores e polígonos são derivados da consulta da safra; as coordenadas dos polígonos são serializadas como [longitude, latitude].
Atenção: o gerador DDS verifica atualmente o item de checklist
DESMATAMENTO_POLIGONOS(plural) para preencherdeforestation_free_declaration, enquanto o motor de validação reconheceDESMATAMENTO_POLIGONO(singular). Por isso, esse bloco pode permanecernullcom os checklists atuais.
GET /complaince/{id}
Retorna a consulta completa da safra, com safra e um mapa fases. Cada chave de fases representa uma etapa que possui registros para a safra; os registros mantêm os campos id, safraId, safraCodigo, faseClazz, dados e os metadados de auditoria.
{
"safra": {},
"fases": {
"<chave_fase>": []
}
}
GET /complaince/{idSafra}/complainceReportExport/{conformidade}/{idioma}
Exporta o relatório de compliance da safra.
conformidade:DDS,GEO,PND,CL,IAV,RCouEUDR.idioma:PT,DE,EN,ES,FR,ITouZH.
O parâmetro conformidade é aceito pela rota, mas a implementação atual não o usa para filtrar o relatório. Para PT, o relatório é retornado no idioma original; os demais idiomas passam pelo serviço de tradução.
curl --request GET \
--url 'https://<url>/complaince/<id_safra>/complainceReportExport/DDS/PT' \
--header 'X-API-ACCESS-KEY: <chave_de_acesso>' \
--header 'X-API-SECRET-KEY: <chave_de_seguranca>'
O relatório retornado atualmente possui versaoLayout ("1.0"), hashIntegridade e safra. Embora o DTO suporte fases achatadas como propriedades de primeiro nível, o serviço atual não adiciona fases ao exportador; portanto, elas não aparecem nessa resposta.
Erros
Quando não existe validação para o DDS ou a API Key não é encontrada, a resposta é 400 Bad Request:
{
"timestamp": "2026-01-15T10:00:00",
"status": "NEGOCIO_EXCEPTION",
"error": "Erro de negócio",
"messages": ["Validação não encontrada para a safra <id_safra>. Execute a validação antes de gerar o DDS."],
"path": "/complaince/dds/<id_safra>"
}