Pular para o conteúdo principal

Processar Saldos por Unidade de Entrega em Lote

Descrição: Processa uma lista de saldos de produtores por unidade de entrega. Comportamento de rollback total: se qualquer item falhar na validação, nenhum item é processado.

Para a estrutura de cada item, consulte Processar Saldo de Produtor por Unidade de Entrega.

Endpoint​

POST/api/v1/integration/balances/by-delivery-place/batch

Regras​

AtributosDescriçãoTipoObrigatórioValidações
(root)Lista de saldosArraySimNão pode ser array vazio
[].cpf_cnpjCPF (11 dígitos) ou CNPJ (14 caracteres) do produtorStringSimDeve ser um CPF ou CNPJ válido (com verificação de dígito). Pontuação é removida antes da validação, então 529.982.247-25 e 52998224725 são equivalentes. CNPJ alfanumérico é aceito: os 12 primeiros caracteres podem conter letras (normalizadas para maiúsculas) e os 2 dígitos verificadores continuam numéricos
[].cropsLista de culturas com saldosArraySimNão pode ser nulo ou vazio
[].crops[].nameNome da cultura (ex: SOJA, MILHO)StringSimNão pode ser vazio ou nulo
[].crops[].delivery_placesLista de saldos por unidade de entregaArraySimNão pode ser nulo ou vazio
[].crops[].delivery_places[].delivery_place_idID da unidade de entregaUUIDSimDeve ser um UUID válido retornado por Buscar Unidades de Entrega
[].crops[].delivery_places[].deposit_balance_tonSaldo em depósito (toneladas)NumberSimDeve ser maior ou igual a zero
[].crops[].delivery_places[].to_fix_balance_tonSaldo a fixar (toneladas)NumberSimDeve ser maior ou igual a zero
[].crops[].delivery_places[].total_balance_tonSaldo total (toneladas)NumberSimDeve ser maior ou igual a zero

Exemplo de Requisição​

curl -X POST \
-H "Authorization: {SUA_API_KEY}" \
-H "Content-Type: application/json" \
-d '[
{
"cpf_cnpj": "52998224725",
"crops": [
{
"name": "SOJA",
"delivery_places": [
{
"delivery_place_id": "1c2db7cc-1020-4423-98cc-02e829299e49",
"deposit_balance_ton": 100,
"to_fix_balance_ton": 200,
"total_balance_ton": 300
}
]
}
]
},
{
"cpf_cnpj": "12345678000195",
"crops": [
{
"name": "MILHO",
"delivery_places": [
{
"delivery_place_id": "ad2db7cc-1020-4423-98cc-02e829299e49",
"deposit_balance_ton": 50,
"to_fix_balance_ton": 100,
"total_balance_ton": 150
}
]
}
]
}
]' \
"https://api.merx.tech/api/v1/integration/balances/by-delivery-place/batch"
Exemplo de Requisição (cURL legado)
curl -X POST "https://api.merx.tech/api/v1/integration/balances/by-delivery-place/batch" \
-H "Authorization: {SUA_API_KEY}" \
-H "Content-Type: application/json" \
-d '[
{
"cpf_cnpj": "52998224725",
"crops": [
{
"name": "SOJA",
"delivery_places": [
{
"delivery_place_id": "1c2db7cc-1020-4423-98cc-02e829299e49",
"deposit_balance_ton": 100,
"to_fix_balance_ton": 200,
"total_balance_ton": 300
}
]
}
]
},
{
"cpf_cnpj": "12345678000195",
"crops": [
{
"name": "MILHO",
"delivery_places": [
{
"delivery_place_id": "ad2db7cc-1020-4423-98cc-02e829299e49",
"deposit_balance_ton": 50,
"to_fix_balance_ton": 100,
"total_balance_ton": 150
}
]
}
]
}
]'

Parâmetros​

Parâmetros de Cabeçalho​

NomeDescriçãoTipoObrigatório
AuthorizationChave de API obtida via support-api@merx.techStringSim
Content-TypeDeve ser application/jsonStringSim

Parâmetros do Corpo​

Array de objetos de saldo. Cada objeto segue a mesma estrutura do endpoint singular por unidade de entrega.

NomeDescriçãoTipoObrigatório
[].cpf_cnpjCPF ou CNPJ do produtorStringSim
[].cropsLista de culturas com saldosArraySim
[].crops[].nameNome da culturaStringSim
[].crops[].delivery_placesLista de saldos por unidade de entregaArraySim
[].crops[].delivery_places[].delivery_place_idID da unidade de entrega (Buscar Unidades de Entrega)UUIDSim
[].crops[].delivery_places[].deposit_balance_tonSaldo em depósito (toneladas)NumberSim
[].crops[].delivery_places[].to_fix_balance_tonSaldo a fixar (toneladas)NumberSim
[].crops[].delivery_places[].total_balance_tonSaldo total (toneladas)NumberSim

Respostas​

  • 200 - OK

Response sem body (HTTP 200 com corpo vazio).

  • 400 - Bad Request
{
"messages": [
"descrição do erro 1",
"descrição do erro 2"
]
}
CenárioMensagem de erro
Array vaziobatch cannot be empty
CPF/CNPJ inválido em itemItem at index {n}: cpf_cnpj is invalid
Array crops vazio em itemItem at index {n}: crops cannot be empty
Array delivery_places vazio em itemItem at index {n}: delivery_places cannot be empty
delivery_place_id ausente em itemItem at index {n}: delivery_place_id is required

Nota: O índice é zero-based (o primeiro item é index 0). Se múltiplos itens possuem erros, todos são reportados. Apenas a validação é all-or-nothing: todos os itens são validados antes de qualquer processamento, portanto um erro de validação em qualquer item impede o processamento do lote inteiro. Não há transação no processamento: se um item falhar em tempo de execução no meio do lote (por exemplo, produtor ou produto inexistente), os itens processados antes dele permanecem gravados e não são revertidos.

  • 404 - Not Found

Produtor ou produto (cultura) não encontrado para a cooperativa informada. Como esse erro só é detectado durante o processamento, ele pode ocorrer no meio do lote — nesse caso os itens processados antes do item que falhou permanecem gravados.

CenárioMensagem de erro
Produtor não encontradomessage.producer.not-found
Cultura/produto não encontradomessage.product.not-found
  • 415 - Unsupported Media Type

Content-Type diferente de application/json.