Processar Saldo de Produtor
Descrição: Processa o saldo de um produtor. Semântica de upsert (chave: cpf_cnpj + cultura). Idempotente na camada de validação — enviar o mesmo payload múltiplas vezes retorna sucesso.
Endpoint
POST/api/v1/integration/balances
Regras
| Atributos | Descrição | Tipo | Obrigatório | Validações |
|---|---|---|---|---|
| cpf_cnpj | CPF (11 dígitos) ou CNPJ (14 dígitos) do produtor | String | Sim | Deve ser um CPF ou CNPJ válido (com verificação de dígito) |
| crops | Lista de culturas com saldos | Array | Sim | Não pode ser nulo ou vazio |
crops[].name | Nome da cultura (ex: SOJA, MILHO) | String | Sim | Não pode ser vazio ou nulo |
crops[].deposit_balance_ton | Saldo em depósito (toneladas) | Number | Sim | Deve ser maior ou igual a zero |
crops[].to_fix_balance_ton | Saldo a fixar (toneladas) | Number | Sim | Deve ser maior ou igual a zero |
crops[].total_balance_ton | Saldo total (toneladas) | Number | Sim | Deve ser maior ou igual a zero |
Exemplo de Requisição
Exemplo de Requisição
curl -X POST "https://homolog.api.merx.tech/api/v1/integration/balances" \
-H "Content-Type: application/json" \
-d '{
"cpf_cnpj": "52998224725",
"crops": [
{
"name": "SOJA",
"deposit_balance_ton": 100,
"to_fix_balance_ton": 200,
"total_balance_ton": 300
}
]
}'
Com múltiplas culturas:
Exemplo de Requisição com múltiplas culturas
curl -X POST "https://homolog.api.merx.tech/api/v1/integration/balances" \
-H "Content-Type: application/json" \
-d '{
"cpf_cnpj": "52998224725",
"crops": [
{
"name": "SOJA",
"deposit_balance_ton": 100,
"to_fix_balance_ton": 200,
"total_balance_ton": 300
},
{
"name": "MILHO",
"deposit_balance_ton": 50,
"to_fix_balance_ton": 100,
"total_balance_ton": 150
}
]
}'
Parâmetros
Parâmetros de Cabeçalho
| Nome | Descrição | Tipo | Obrigatório |
|---|---|---|---|
| Content-Type | Deve ser application/json | String | Sim |
Parâmetros do Corpo
| Nome | Descrição | Tipo | Obrigatório |
|---|---|---|---|
| cpf_cnpj | CPF ou CNPJ do produtor | String | Sim |
| crops | Lista de culturas com saldos | Array | Sim |
crops[].name | Nome da cultura (ex: SOJA, MILHO) | String | Sim |
crops[].deposit_balance_ton | Saldo em depósito (toneladas) | Number | Sim |
crops[].to_fix_balance_ton | Saldo a fixar (toneladas) | Number | Sim |
crops[].total_balance_ton | Saldo total (toneladas) | Number | Sim |
Respostas
- 200 - OK
Response sem body (HTTP 200 com corpo vazio).
- 400 - Bad Request
{
"messages": [
"descricao do erro 1",
"descricao do erro 2"
]
}
| Cenário | Mensagem de erro |
|---|---|
cpf_cnpj ausente | cpf_cnpj is required |
| CPF/CNPJ inválido | cpf_cnpj is invalid |
crops ausente | crops is required |
Array crops vazio | crops cannot be empty |
Cultura sem name | name is required |
| Valor de saldo negativo | deposit_balance_ton must be greater than or equal to zero |
- 415 - Unsupported Media Type
Content-Type diferente de application/json.