Referência da API (cliente)

API HTTP JSON para automação de pesagem. Documentação canónica em Markdown: pasta docs/. Esta página é uma síntese para integradores.

Abre a janela de impressão do browser. Em Destino / Impressora, escolha Guardar como PDF (ou equivalente) para gerar um ficheiro com todo o conteúdo desta página.

Geral

Base URL: substitua pelo seu servidor, por exemplo http://seu-host:8000. Os paths abaixo são relativos a essa base.

Document root: a pasta public/ do repositório. Em desenvolvimento recomenda-se php -S 0.0.0.0:8000 router.php dentro de public/ para o router encaminhar os paths.

Autenticação: os endpoints actuais não implementam autenticação HTTP (Bearer, API key, etc.) nos handlers.

POST — header: Content-Type: application/json

Erros comuns: corpo JSON inválido → 400 invalid_json; validação → 422 validation_error (com details); falha Oracle → 500 database_error. Com APP_DEBUG=1 no .env, erros de BD podem incluir details (apenas desenvolvimento).

POST /precad-automatiza

Pré-cadastro do veículo na integração (integr_erp_conceitto + tagbal).

Doc completa: docs/api-json-precad-automatiza.md

Entrada (body JSON)

ParâmetroLocalObrigatórioTipoRegras / notas
tagbodySimnúmero ou stringIdentificador da tag (ligação ao tagbal).
placaCavalobodySimstringPlaca cavalo.
dataOrdembodySimstringData/hora da ordem; formatos legados e ISO 8601 com Z.
placaCarretabodyNãostringOmissão = vazio.
transportadorbodyNãostringOmissão = vazio.
motoristabodyNãostringOmissão = vazio.
razaoSocialbodyNãostringOmissão = vazio.
cnpjbodyNãostringOmissão = vazio.
iebodyNãostringOmissão = vazio.
enderecobodyNãostringOmissão = vazio.
municipiobodyNãostringOmissão = vazio.
ufbodyNãostringOmissão = vazio.
produtobodyNãostringOmissão = vazio.
nrOrdembodyNãonúmero ou stringOmissão = vazio.
tpPesagembodyNãostringOmissão = vazio.

Saída (sucesso)

HTTP 200 — JSON:

CampoTipoDescrição
tagnúmeroTag processada.
statusinteiroRetorno da operação de pré-cadastro; sucesso típico = 1.

Erros (resumo)

HTTPerrorQuando
400invalid_jsonCorpo vazio ou JSON inválido.
405method_not_allowedMétodo diferente de POST.
422validation_errorFalta obrigatório ou dataOrdem inválida.
500database_error / server_errorFalha de BD ou execução.
{
  "tag": 10000010,
  "placaCavalo": "ABC1234",
  "dataOrdem": "2024-10-30T08:00:00Z"
}

GET /consulta-automatiza

Consulta estado associado a uma balança (resposta sempre com o mesmo conjunto de campos).

Doc completa: docs/api-json-consulta-automatiza.md

Entrada (query string)

ParâmetroLocalObrigatórioTipoRegras / notas
scaleIdqueryUm dos doisinteiro ≥ 1Número da balança. Também aceite como string só com dígitos.
balqueryUm dos doisinteiro ≥ 1Alias de scaleId. Se ambos forem enviados, têm de ser iguais.
Exemplo: GET /consulta-automatiza?scaleId=1

Saída (sucesso)

HTTP 200 — sempre o mesmo shape:

CampoCom dadosSem dados
scaleIdnúmeronúmero (valor pedido)
tagnúmeronull
placaVeiculostring""
peso1númeronull
peso2númeronull
statusnúmeronull
nrOrdemnúmeronull

Erros (resumo)

HTTPerrorQuando
405method_not_allowedMétodo diferente de GET.
422validation_errorParâmetros em falta, inválidos ou scaleId ≠ bal.
500database_error / server_errorFalha de BD ou execução.

POST /trocastatus-automatiza

Actualiza fg_status, mensagens e opcionalmente peso_ordem_pesagem / observacao em integr_erp_conceitto para uma tag.

Doc completa: docs/api-json-trocastatus-automatiza.md

Entrada (body JSON)

ParâmetroLocalObrigatórioTipoRegras / notas
tagbodySiminteiro ≥ 1Tag do registo a actualizar.
statusbodySiminteiro0: não altera fg_status; só mensagens (e opcionalmente peso). ≠0: actualiza fg_status.
messagesbodyNãoarray de stringsAté 3 entradas → mensagem_1…3. Omissão ou [] → três vazias.
pesoOrdembodyNãonúmero / string numéricaSe preenchido (trim não vazio e numérico), inclui peso_ordem_pesagem no UPDATE.
observacaobodyNãostringOmissão = vazio.

Saída (sucesso)

HTTP 200

CampoTipoDescrição
taginteiroTag enviada.
statusinteiroValor devolvido após sucesso (em condições normais coincide com o pedido).

Erros (resumo)

HTTPerrorQuando
400invalid_jsonCorpo vazio ou JSON inválido.
405method_not_allowedMétodo diferente de POST.
422validation_errorValidação de tag, status, messages, pesoOrdem.
500database_error / server_errorFalha de BD ou execução.
{
  "tag": 10000010,
  "status": 7,
  "messages": ["Linha 1", "Linha 2", "Linha 3"]
}

POST /classifica-automatiza

Dados para ticket e classificação (TICKETGER, CLASSIFICA). Obrigatório no fluxo de pesagem mesmo sem classificação — use descontos: [].

Doc completa: docs/api-json-classifica-automatiza.md

Entrada (body JSON)

ParâmetroLocalObrigatórioTipoRegras / notas
nrOrdembodySiminteiro ≥ 1Ordem de pesagem; tem de existir em integr_erp_conceitto_log.
numMoegabodySiminteiroMoega.
numNotabodySimstring ou númeroNúmero da nota.
numTicketbodySiminteiroTicket.
pesoSecobodySiminteiroPeso seco.
pesoLiquidobodySiminteiroPeso líquido.
descontosbodyNão (tratado como [])arrayLista de { "descricao", "valor" }. Itens com descrição não vazia inserem em CLASSIFICA.
origem, destino, produto, usuarioPesagem, usuarioPesagem2, transportador, motorista, cidade, uf, tpAcondicionamento, dsObservacaobodyNãostringOmissão = string vazia.

Saída (sucesso)

HTTP 200

CampoTipoDescrição
messagestringConfirmação fixa de sucesso.
{ "message": "Dados de classificação recebidos com sucesso" }

Erros (resumo)

HTTPerrorQuando
400invalid_jsonCorpo vazio ou JSON inválido.
405method_not_allowedMétodo diferente de POST.
422validation_errorCampos ou tipos inválidos.
404not_foundSem linha no log para nrOrdem.
500database_error / server_errorFalha de BD ou execução.

POST /gera-ticket-automatiza

Comando de impressão / reimpressão: UPDATE TICKETGER SET STATUS = 0 WHERE PEDIDO = nrOrdem.

Doc completa: docs/api-json-gera-ticket-automatiza.md

Entrada (body JSON)

ParâmetroLocalObrigatórioTipoRegras / notas
nrOrdembodySiminteiro ≥ 1Ordem de pesagem (PEDIDO).
statusbodySiminteiroObrigatório no JSON por compatibilidade; não é usado no SQL — o UPDATE fixa sempre STATUS = 0.

Saída (sucesso)

HTTP 200 — mesmo que não exista linha em TICKETGER (0 linhas afectadas), o legado considera sucesso se o execute não falhar.

CampoTipoDescrição
messagestringConfirmação fixa de sucesso.
{
  "nrOrdem": 10,
  "status": 1
}

{ "message": "Ticket enviado para impressão" }

Erros (resumo)

HTTPerrorQuando
400invalid_jsonCorpo vazio ou JSON inválido.
405method_not_allowedMétodo diferente de POST.
422validation_errornrOrdem ou status inválidos.
500database_error / server_errorFalha de BD ou execução.