Status ESG dos Produtores (paginado)
Descrição: Percorre, de forma paginada, todos os produtores da base da cooperativa, devolvendo para cada um o status de conformidade socioambiental e as camadas em que ele está embargado, com a quantidade de apontamentos por camada.
É o endpoint para varrer a base inteira. Para consultar um produtor específico com o detalhamento de cada apontamento, use a Busca Simplificada.
Endpoint
Regras
Os filtros vão no corpo da requisição. Todos são opcionais — um corpo vazio ({}) devolve a base completa da cooperativa.
| Atributos | Descrição | Tipo | Obrigatório | Validações |
|---|---|---|---|---|
| producer_document | Filtra por um CPF/CNPJ. Pontuação e zeros à esquerda são irrelevantes | String | Não | - |
| search_param | Busca textual sobre o nome e o documento do produtor | String | Não | - |
| layers | Define o escopo de camadas na mão, sem aplicar o template da cooperativa | List\<String> | Não | Cada camada precisa existir e ser do tipo PRODUCER_ISSUE |
| use_template | Respeitar o template ESG cadastrado para a cooperativa. Omitido equivale a true | Boolean | Não | true junto de layers preenchido → 400 |
Escopo de camadas
layers e use_template respondem à mesma pergunta — quais camadas entram na conta — e por isso não podem ser combinados quando use_template é true. As combinações válidas:
use_template | layers | Escopo considerado |
|---|---|---|
| omitido | vazio | Template ESG da cooperativa (padrão) |
true | vazio | Template ESG da cooperativa |
| omitido | ["LISTA_SUJA_MPT"] | Apenas as camadas informadas, sem template |
false | ["LISTA_SUJA_MPT"] | Apenas as camadas informadas, sem template |
false | vazio | Todas as camadas do tipo PRODUCER_ISSUE |
true | ["LISTA_SUJA_MPT"] | 400 — combinação contraditória |
Uma camada inexistente, com o nome errado, ou de tipo incompatível com o endpoint também retorna 400: sem isso a consulta não casaria com nada e devolveria a base inteira como CONFORME.
Os valores válidos saem de Camadas Disponíveis para o Filtro.
Exemplo de Requisição
- cURL
- Java
- JavaScript
- Python
curl -X POST \
-H "Authorization: {SUA_API_KEY}" \
-H "Content-Type: application/json" \
-d '{ "search_param": "JOSE" }' \
"https://api.merx.tech/api/v1/integration/environmental-embargoes/producer-status?page=0&size=10"
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
String body = "{\"search_param\":\"JOSE\"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.merx.tech/api/v1/integration/environmental-embargoes/producer-status?page=0&size=10"))
.header("Authorization", "{SUA_API_KEY}")
.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/environmental-embargoes/producer-status?page=0&size=10',
{
method: 'POST',
headers: {
'Authorization': '{SUA_API_KEY}',
'Content-Type': 'application/json',
},
body: JSON.stringify({ search_param: 'JOSE' }),
}
);
const data = await response.json();
console.log(data);
import requests
url = "https://api.merx.tech/api/v1/integration/environmental-embargoes/producer-status"
headers = {
"Authorization": "{SUA_API_KEY}",
"Content-Type": "application/json",
}
params = {"page": 0, "size": 10}
body = {"search_param": "JOSE"}
response = requests.post(url, headers=headers, params=params, json=body)
print(response.json())
Parâmetros
Parâmetros de Cabeçalho
| Nome | Descrição | Tipo | Obrigatório |
|---|---|---|---|
| Authorization | Chave de API obtida via support-api@merx.tech | String | Sim |
| Content-Type | application/json | String | Sim |
Parâmetros de Query
| Nome | Descrição | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
| page | Número da página, começando em zero | Number | Não | 0 |
| size | Quantidade de registros por página. Máximo 100 | Number | Não | 20 |
Dicionário de dados
| Nome | Descrição | Tipo |
|---|---|---|
| content | Produtores da página | Array |
| content[].producer_name | Nome do produtor | String |
| content[].producer_document | CPF ou CNPJ do produtor | String |
| content[].status_esg | Status consolidado. Valores: CONFORME, NAO_CONFORME, NAO_ENCONTRADO | Enum |
| content[].embargoed_layers | Somente as camadas com apontamento. Vazio quando o produtor está conforme | Array |
| content[].embargoed_layers[].layer | Camada de análise em que o produtor está embargado | String |
| content[].embargoed_layers[].amount | Quantidade de apontamentos naquela camada | Number |
| total_elements | Total de produtores que atendem aos filtros | Number |
| total_pages | Total de páginas | Number |
| number | Número da página atual, começando em zero | Number |
| size | Tamanho da página | Number |
| first | Indica se é a primeira página | Boolean |
| last | Indica se é a última página | Boolean |
| number_of_elements | Quantidade de registros nesta página | Number |
status_esgéNAO_CONFORMEquandoembargoed_layersnão está vazio eCONFORMEquando está. O valorNAO_ENCONTRADOaparece quando o produtor não tem um documento utilizável na base (em branco, só pontuação ou só zeros): sem documento não há como cruzar com as bases de embargo, e devolverCONFORMEafirmaria uma conformidade que nunca foi verificada.
Respostas
- 200 - Ok
{
"content": [
{
"producer_name": "JOSE",
"producer_document": "34343434",
"status_esg": "NAO_CONFORME",
"embargoed_layers": [
{ "layer": "ICMBIO_PRODUTOR", "amount": 2 },
{ "layer": "LISTA_SUJA_MPT", "amount": 1 }
]
},
{
"producer_name": "JOSE 23",
"producer_document": "34353443443434",
"status_esg": "CONFORME",
"embargoed_layers": []
}
],
"total_elements": 842,
"total_pages": 85,
"number": 0,
"size": 10,
"first": true,
"last": false,
"number_of_elements": 10
}
- 400 - Bad Request
{
"messages": ["message.layers-or-use-template.exclusive"]
}
Principais mensagens: message.layers-or-use-template.exclusive (use_template: true junto de layers preenchido), message.layers.unknown (camada inexistente ou de outro tipo), message.layers.invalid (entrada vazia em layers), message.size.max-exceeded (size acima de 100), message.size.invalid, message.page.invalid.
- 401 - Unauthorized