Integrações
Balança
Uma superfície operacional para sistemas de software enviarem pesagens ao
AGROs. Ela é separada das coleções REST e OData: a consulta da base é
leitura, enquanto registrar e cancelar são ações explícitas protegidas pelo
escopo
balanca.manage.
Crie um token dedicado em
Configurações → Integrações, selecione Balança e configure o segredo no sistema consumidor
por um cofre seguro. O token aparece uma única vez. A organização precisa ter
o OpenAGROs habilitado, e quem cria ou revoga tokens precisa de
openagros.manage.
Autenticação e permissão
O contrato canônico usa um token oag_... no cabeçalho
Authorization:
Authorization: Bearer oag_SEU_TOKEN
Para consumidores legados, o mesmo segredo também pode ser enviado em
x-api-key. Em integrações novas, prefira sempre
Authorization: Bearer. O token continua sujeito à expiração,
revogação, limite por minuto e lista de IPs configurados.
| Permissão/escopo | Uso |
|---|---|
balanca.manage | Registrar e cancelar pesagens; também pode consultar a base. |
agriculture.read | Consultar a base de pesagem, sem autorizar escrita. |
openagros.manage | Criar, rotacionar ou revogar tokens na tela de Integrações. |
Balança também aparece na permissão de membros do OpenAGROs,
tanto no convite quanto na edição. A permissão do membro e o escopo do token são
controles diferentes: a integração deve receber o escopo no token, e o membro
que administra esse token deve ter openagros.manage.
Endpoints
| Método | Caminho legado | Escopo | Função |
|---|---|---|---|
GET | /agricultura/colheita/pesagem/base | balanca.manage ou agriculture.read | Lista áreas, subáreas, produtos e locais ativos. |
POST | /balanca/pesagem | balanca.manage | Registra até 100 pesagens por requisição. |
DELETE | /balanca/pesagem/:numero_pesagem | balanca.manage | Cancela logicamente uma pesagem. |
Os caminhos versionados equivalentes são
/v1/agriculture/weighing/base,
/v1/agriculture/weighing e
/v1/agriculture/weighing/:numero_pesagem. O caminho legado é o
indicado para consumidores que já usam o contrato do fabric-api.
Consultar a base
Consulte a base antes de enviar a primeira pesagem. O alias legado preserva
o envelope { dados: ... }; o caminho versionado retorna
diretamente { itens, locais }.
curl --request GET \
--url "https://service.agrosti.com.br/agricultura/colheita/pesagem/base" \
--header "Authorization: Bearer oag_SEU_TOKEN" {
"dados": {
"itens": [
{
"codigo": 17,
"controle": 1,
"fazenda": "Fazenda Norte",
"area": "Talhão 03",
"subarea": "Quadra A",
"produto_codigo": 4301,
"nome": "1200 - 2 Maçã (4301)",
"unidade": "KG"
}
],
"locais": [
{ "codigo": 4, "nome": "Expedição", "fazenda": "Fazenda Norte" }
]
}
}
Em itens, use area, subarea e
produto_codigo devolvidos pela base. Em locais,
nome é o destino disponível para a operação.
Registrar pesagens
O corpo é um array JSON, não um objeto envelopado. Cada requisição aceita no máximo 100 itens e pode retornar sucesso parcial.
[
{
"numero_pesagem": 123456,
"id_empresa": 1,
"data_entrada_pesagem": "2025-06-10T10:15:00Z",
"data_saida_pesagem": "2025-06-10T10:37:00Z",
"placa_cavalo": "ABC1D23",
"placa_carreta": null,
"origem": "Fazenda Norte",
"area": "Talhão 03",
"subarea": "Quadra A",
"destino": "Expedição",
"motorista": "João da Silva",
"desc_interna_produto": "Maçã (4301)",
"peso_tara": 10000,
"peso_bruto": 35000,
"peso_liquido": 25000,
"peso_quebra": 100,
"operador_pesagem": "balanca-01",
"ticket": "TCK-123456",
"ticket_origem": "ERP-123456",
"op_numero": 1200,
"op_controle": 2,
"produto_codigo": 4301
}
] curl --request POST \
--url "https://service.agrosti.com.br/balanca/pesagem" \
--header "Authorization: Bearer oag_SEU_TOKEN" \
--header "Content-Type: application/json" \
--data @pesagens.json Campos de identificação e resolução
| Campo | Regra |
|---|---|
numero_pesagem | Inteiro positivo. Identifica a pesagem e funciona como chave de idempotência. |
area + subarea | Obrigatórios; delimitam a ordem/produto que será enriquecida no ERP. |
produto_codigo | Opcional, mas recomendado. É a forma mais determinística de localizar o produto. |
op_numero + op_controle | Fallback de resolução quando o código do produto não for enviado. |
desc_interna_produto | Obrigatória. Também pode resolver pelo código no final do texto,
como Produto (4301). |
id_empresa | Obrigatório por compatibilidade com o contrato legado; a organização efetiva vem do token. |
O serviço tenta localizar produto/OP por produto_codigo, depois
pelo código ao final de desc_interna_produto, pelo par de OP e,
por último, pela cultura descrita. Se não encontrar uma combinação válida de
área, subárea e produto/OP, o item volta em erros e não é gravado.
Cancelar e reprocessar
O DELETE é um cancelamento lógico: preserva o registro histórico e marca a
pesagem como cancelada. Repetir o DELETE é seguro, mas devolve
404 porque ela já não está ativa.
curl --request DELETE \
--url "https://service.agrosti.com.br/balanca/pesagem/123456" \
--header "Authorization: Bearer oag_SEU_TOKEN" {
"sucesso": [123456],
"erros": []
}
Uma pesagem ativa com o mesmo numero_pesagem não é inserida duas
vezes e retorna Pesagem já processada anteriormente.. Depois de
cancelada, ela pode ser enviada novamente para reprocessamento.
Respostas e falhas
| Status | Quando | Ação do consumidor |
|---|---|---|
200 | Todos os itens foram processados. | Confirme sucesso. |
207 | Alguns itens foram processados e outros falharam. | Reenvie somente os itens de erros depois de corrigir o motivo. |
400 | Array vazio ou payload inválido. | Corrija o contrato antes de repetir. |
422 | Nenhum item do lote foi gravado. | Trate cada mensagem em erros; não repita às cegas. |
401 / 403 | Token ausente, inválido, sem escopo, fora da allowlist ou organização sem OpenAGROs. | Corrija token, escopo, entitlement ou IP antes de repetir. |
404 | Cancelamento de pesagem inexistente ou já cancelada. | Considere a operação idempotentemente concluída. |
Se o sistema consumidor exige whitelist, informe o IP público fixo de
saída do
web-server e, quando possível, repita a restrição na allowlist
do próprio token. Assim o segredo não funciona a partir de outra origem, mesmo
que seja copiado.