Pular para o conteúdo principal

Registrar Entregas em Lote

Descrição: Registra uma lista de entregas. Comportamento de rollback total: se qualquer item falhar na validação, nenhum registro é criado.

Endpoint​

POST/api/v1/integration/deliveries/batch

Regras​

AtributosDescriçãoTipoObrigatórioValidações
(root)Lista de entregasArraySimNão pode ser array vazio
[].contract_idIdentificador do contratoStringSimNão pode ser vazio ou nulo
[].delivered_volumeVolume entregueNumberSimDeve ser maior que zero
[].delivered_volume_unit_of_measureUnidade de medida do volumeString (enum)SimValores aceitos: kg, sc, ton
[].delivery_dateData da entregaStringSimFormato obrigatório: YYYY-MM-DD
[].carCódigo CAR (Cadastro Ambiental Rural)StringNão-
[].delivery_modeModo de entrega. FULL substitui o volume entregue da negociação; PARTIAL incrementaString (enum)NãoValores aceitos: FULL, PARTIAL. Padrão: PARTIAL

Exemplo de Requisição​

curl -X POST \
-H "Authorization: {SUA_API_KEY}" \
-H "Content-Type: application/json" \
-d '[
{
"contract_id": "000122",
"delivered_volume": 10,
"delivered_volume_unit_of_measure": "ton",
"delivery_date": "2026-03-02"
},
{
"contract_id": "000123",
"delivered_volume": 500,
"delivered_volume_unit_of_measure": "sc",
"delivery_date": "2026-03-03",
"car": "GO-5201405-XYZ987"
}
]' \
"https://api.merx.tech/api/v1/integration/deliveries/batch"
Exemplo de Requisição (cURL legado)
curl -X POST "https://api.merx.tech/api/v1/integration/deliveries/batch" \
-H "Authorization: {SUA_API_KEY}" \
-H "Content-Type: application/json" \
-d '[
{
"contract_id": "000122",
"delivered_volume": 10,
"delivered_volume_unit_of_measure": "ton",
"delivery_date": "2026-03-02"
},
{
"contract_id": "000123",
"delivered_volume": 500,
"delivered_volume_unit_of_measure": "sc",
"delivery_date": "2026-03-03",
"car": "GO-5201405-XYZ987"
}
]'

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 entrega. Cada objeto segue a mesma estrutura do endpoint singular.

NomeDescriçãoTipoObrigatório
[].contract_idIdentificador do contratoStringSim
[].delivered_volumeVolume entregueNumberSim
[].delivered_volume_unit_of_measureUnidade de medida do volumeString (enum)Sim
[].delivery_dateData da entrega (formato YYYY-MM-DD)StringSim
[].carCódigo CAR (Cadastro Ambiental Rural)StringNão
[].delivery_modeModo de entrega (FULL ou PARTIAL). Padrão: PARTIALString (enum)Não

Respostas​

  • 201 - Created
[
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"contract_id": "000122",
"delivered_volume": 10,
"delivered_volume_unit_of_measure": "ton",
"delivery_date": "2026-03-02"
},
{
"id": "f1e2d3c4-b5a6-7890-abcd-ef0987654321",
"contract_id": "000123",
"delivered_volume": 500,
"delivered_volume_unit_of_measure": "sc",
"delivery_date": "2026-03-03",
"car": "GO-5201405-XYZ987"
}
]

Atenção: assim como no endpoint singular, o id de cada item não é persistido. Ele é gerado no momento da resposta, não identifica nenhum recurso consultável na plataforma e não serve como chave de idempotência. O efeito real de cada item é atualizar o volume entregue da negociação correspondente.

  • 400 - Bad Request
{
"messages": [
"descrição do erro 1",
"descrição do erro 2"
]
}
CenárioMensagem de erro
Array vaziobatch cannot be empty
Item inválido (identifica índice)Item at index {n}: delivered_volume must be greater than zero
Unidade inválida em itemItem at index {n}: delivered_volume_unit_of_measure must be one of: kg, sc, ton

Nota: O índice é zero-based (o primeiro item é index 0). 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, contract_id sem negociação correspondente), as atualizações de volume dos itens aplicados antes dele permanecem e não são revertidas.

  • 404 - Not Found

Nenhuma negociação encontrada para o contract_id de algum item do lote. Como essa verificação só acontece durante o processamento, o erro pode ocorrer no meio do lote — nesse caso as atualizações dos itens aplicados antes dele permanecem.

CenárioMensagem de erro
contract_id sem negociação correspondentemessage.order-commitment.not-found
  • 415 - Unsupported Media Type

Content-Type diferente de application/json.