Tema
Integração industrial Edge
API-143 — Obter configuração para o coletor
GET /api/mes/edge/config
Finalidade: Obter configuração para o coletor.
Fonte: src/main/java/com/wester/storage/mes/MesEdgeController.java:12 — MesEdgeController.config.
Autenticação, autorização e perfis: Chave X-Edge-Key válida (MES_EDGE_KEY com pelo menos 16 bytes). JWT não substitui a chave. Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: X-Edge-Key: <CHAVE>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
machineId | query | String | Sim | — |
edgeId | query | String | Não | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesConfig. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"machineId": "Exemplo",
"revision": 1,
"executionId": "00000000-0000-4000-8000-000000000001",
"idealCycleMs": 1,
"piecesPerCycle": 1,
"mechanicalFault": false,
"recoveryPending": false,
"hasCompletedCycle": false,
"productionBlocked": false,
"manualLamp": "Exemplo",
"desiredLamp": "Exemplo"
}Códigos HTTP: 200, 400, 401, 404, 409, 503. Códigos de segurança dependem da cadeia de filtros; falhas não capturadas podem chegar ao tratamento global descrito em Erros.
Validações e erros identificados na cadeia local do serviço:
- Edge nao vinculado a maquina
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.config. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/mes/edge/config?machineId=DOC.01" -H "X-Edge-Key: ${EDGE_KEY}"API-144 — Receber evento do coletor
POST /api/mes/edge/events
Finalidade: Receber evento do coletor. Idempotência por eventId com corpo idêntico. Conteúdo diferente ou reutilização da sequência gera conflito. Saltos na sequência exigem validação e não contabilizam peças daquele ciclo. Timestamp até 5 minutos no futuro. CYCLE exige execução original e timings; schemaVersion >= 3 exige namedSignals.
Fonte: src/main/java/com/wester/storage/mes/MesEdgeController.java:13 — MesEdgeController.events.
Autenticação, autorização e perfis: Chave X-Edge-Key válida (MES_EDGE_KEY com pelo menos 16 bytes). JWT não substitui a chave. Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: X-Edge-Key: <CHAVE>. Accept: application/json recomendado. Content-Type: application/json para o corpo.
Parâmetros:
Sem query parameters, path variables ou headers de negócio declarados.
Corpo da requisição: MesEdgeEventInput; obrigatório. Sem @Valid no argumento; validações de negócio são executadas pelo serviço. Consulte os campos e restrições em Modelos.
Exemplo sintético (IDs devem existir e versões devem vir de consulta):
json
{
"machineId": "DOC.01",
"eventId": "00000000-0000-4000-8000-000000000001",
"sequence": 1,
"timestamp": "2026-10-15T12:00:00Z",
"type": "SNAPSHOT",
"lamp": "OFF",
"outputStatus": "DISABLED",
"signals": {
"DI0": 0,
"DI1": 0,
"DI2": 0,
"DI3": 0,
"DI4": 0
},
"schemaVersion": 3,
"namedSignals": {
"BOMBA": 0,
"MOLDE_FECHADO": 0,
"ENCOSTE_BICO": 0,
"INJECAO": 0,
"ALARME": 0
}
}Resposta de sucesso: MesEventAck. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"eventId": "00000000-0000-4000-8000-000000000001",
"duplicate": false
}Códigos HTTP: 200, 400, 401, 404, 409, 503. Códigos de segurança dependem da cadeia de filtros; falhas não capturadas podem chegar ao tratamento global descrito em Erros.
Validações e erros identificados na cadeia local do serviço:
- Edge nao vinculado a maquina
- eventId reutilizado com conteudo diferente
- Sequencia do Edge reutilizada com outro eventId
- classification invalida
- CYCLE exige VALID_CYCLE
- Resultado valido deve usar CYCLE
- cycleState invalido
- Timestamp mais de cinco minutos no futuro
- Inicio do ciclo posterior ao evento
- signals obrigatorio
- namedSignals obrigatorio a partir de schemaVersion 3
- Execucao pertence a outra maquina
- Execucao ainda nao iniciada
- CYCLE exige executionId original
- cycle obrigatorio
- Pecas divergem do contexto imutavel
- timings obrigatorio
- CYCLE_RESULT exige cycle
- Ciclo interrompido nao pode produzir pecas
- Somente eventos de ciclo podem conter cycle
- JSON persistido invalido
- UUID invalido
- JSON invalido
- Histórico de causas desta parada atingiu o limite; libere a ocorrência antes de registrar outra
Regras de negócio e dependências: MesService.ingest. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/mes/edge/events" -H "X-Edge-Key: ${EDGE_KEY}" -H 'Content-Type: application/json' --data '{"machineId":"DOC.01","eventId":"00000000-0000-4000-8000-000000000001","sequence":1,"timestamp":"2026-10-15T12:00:00Z","type":"SNAPSHOT","lamp":"OFF","outputStatus":"DISABLED","signals":{"DI0":0,"DI1":0,"DI2":0,"DI3":0,"DI4":0},"schemaVersion":3,"namedSignals":{"BOMBA":0,"MOLDE_FECHADO":0,"ENCOSTE_BICO":0,"INJECAO":0,"ALARME":0}}'API-145 — Receber saúde do coletor
POST /api/mes/edge/heartbeat
Finalidade: Receber saúde do coletor.
Fonte: src/main/java/com/wester/storage/mes/MesEdgeController.java:14 — MesEdgeController.heartbeat.
Autenticação, autorização e perfis: Chave X-Edge-Key válida (MES_EDGE_KEY com pelo menos 16 bytes). JWT não substitui a chave. Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: X-Edge-Key: <CHAVE>. Accept: application/json recomendado. Content-Type: application/json para o corpo.
Parâmetros:
Sem query parameters, path variables ou headers de negócio declarados.
Corpo da requisição: MesHeartbeatInput; obrigatório. Sem @Valid no argumento; validações de negócio são executadas pelo serviço. Consulte os campos e restrições em Modelos.
Exemplo sintético (IDs devem existir e versões devem vir de consulta):
json
{
"machineId": "DOC.01",
"adamReadAt": "2026-10-15T12:00:00Z",
"outboxDepth": 0,
"quarantineDepth": 0
}Resposta de sucesso: MesHeartbeatAck. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"accepted": false,
"receivedAt": "2026-10-15T12:00:00Z"
}Códigos HTTP: 200, 400, 401, 404, 409, 503. Códigos de segurança dependem da cadeia de filtros; falhas não capturadas podem chegar ao tratamento global descrito em Erros.
Validações e erros identificados na cadeia local do serviço:
- lastRejection invalida
- JSON persistido invalido
Regras de negócio e dependências: MesService.heartbeat. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/mes/edge/heartbeat" -H "X-Edge-Key: ${EDGE_KEY}" -H 'Content-Type: application/json' --data '{"machineId":"DOC.01","adamReadAt":"2026-10-15T12:00:00Z","outboxDepth":0,"quarantineDepth":0}'