ValidacaoController
Valida os dados da safra de acordo com um checklist e uma conformidade.
Todas as requisições exigem os cabeçalhos X-API-ACCESS-KEY e X-API-SECRET-KEY.
POST /validacao
Executa uma validação para a safra. O campo safraId é obrigatório. Em dados, o checklist.id e a conformidade também são obrigatórios; o checklist precisa existir e possuir itens associados.
conformidade aceita: DDS, GEO, PND, CL, IAV, RC ou EUDR.
curl --request POST \
--url https://<url>/validacao \
--header 'X-API-ACCESS-KEY: <chave_de_acesso>' \
--header 'X-API-SECRET-KEY: <chave_de_seguranca>' \
--header 'Content-Type: application/json' \
--data '{
"safraId": "<id_safra>",
"safraCodigo": "<codigo_safra_opcional>",
"dados": {
"checklist": {
"id": "<id_checklist>"
},
"conformidade": "DDS"
}
}'
Retorna 200 OK com uma validação completa. O dados da validação contém os dados enviados; itens contém o resultado de cada item do checklist.
{
"id": "<id_validacao>",
"safraId": "<id_safra>",
"safraCodigo": "<codigo_safra>",
"hash": "<sha256>",
"dataCadastro": "2026-01-15T10:00:00",
"dataAtualizacao": "2026-01-15T10:00:00",
"dados": {
"checklist": {
"id": "<id_checklist>"
},
"conformidade": "DDS"
},
"checklist": {
"id": "<id_checklist>",
"nome": "<nome>",
"label": "<label>",
"ativo": true,
"conformidades": ["DDS"]
},
"inicioExecucao": "2026-01-15T10:00:00",
"fimExecucao": "2026-01-15T10:00:01",
"itens": [
{
"validacaoId": "<id_validacao>",
"checklistItem": {
"id": "<id_item>",
"nome": "CAMPOS_OBRIGATORIOS",
"label": "Campos obrigatórios",
"tipo": "OBRIGATORIO",
"checklist": {
"id": "<id_checklist>"
}
},
"conforme": true,
"percentualNaoConformidade": 0.0,
"exigencias": []
}
]
}
Os itens atualmente reconhecidos pela implementação são DESMATAMENTO_CAR, TALHAO, DESMATAMENTO_POLIGONO, DESMATAMENTO_TALHAO e CAMPOS_OBRIGATORIOS. A validação calcula a não conformidade e registra as exigências encontradas.
PUT /validacao
Atualiza somente o mapa dados de uma validação existente. Essa operação não reexecuta o checklist nem recalcula os itens de validação.
curl --request PUT \
--url https://<url>/validacao \
--header 'X-API-ACCESS-KEY: <chave_de_acesso>' \
--header 'X-API-SECRET-KEY: <chave_de_seguranca>' \
--header 'Content-Type: application/json' \
--data '{
"id": "<id_validacao>",
"dados": {
"observacao": "<novo_valor>"
}
}'
Retorna 200 OK sem corpo.
GET /validacao/{id}
Busca uma validação completa pelo ID (String). Retorna o mesmo formato completo do POST, incluindo itens.
curl --request GET \
--url https://<url>/validacao/<id_validacao> \
--header 'X-API-ACCESS-KEY: <chave_de_acesso>' \
--header 'X-API-SECRET-KEY: <chave_de_seguranca>'
GET /validacao/safra/{id}
Lista as validações da safra. O retorno é uma lista JSON, não um objeto Page.
GET /validacao
Lista as validações da API Key autenticada em uma página. Parâmetros opcionais: page (página, iniciando em zero), size (padrão 10) e sort (padrão dataCadastro).
Exemplo: /validacao?page=0&size=10&sort=dataCadastro,desc.
O conteúdo da página usa o resumo da validação, com id, safraId, safraCodigo, hash, dataCadastro, dataAtualizacao, dados, checklist, inicioExecucao e fimExecucao; os itens são retornados apenas na busca por ID e no cadastro.
DELETE /validacao/{id}
Exclui a validação pelo ID (String) e retorna 200 OK sem corpo.
Erros
Erros de regra de negócio e validação de entrada retornam 400 Bad Request no formato abaixo:
{
"timestamp": "2026-01-15T10:00:00",
"status": "NEGOCIO_EXCEPTION",
"error": "Erro de negócio",
"messages": ["A safra é obrigatória para a validação."],
"path": "/validacao"
}