Tema
PCP e produção
API-117 — Consultar permissões de produção
GET /api/mes/permissions
Finalidade: Consultar permissões de produção.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:19 — MesController.permissions.
Autenticação, autorização e perfis: Usuário autenticado; sem autoridade adicional declarada no método. Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
Sem query parameters, path variables ou headers de negócio declarados.
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesPermissions. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"read": false,
"operate": false,
"maintain": false,
"plan": false,
"admin": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. Códigos de segurança dependem da cadeia de filtros; falhas não capturadas podem chegar ao tratamento global descrito em Erros.
Regras de negócio e dependências: MesAccess.permissions. 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/permissions" -H "Authorization: Bearer ${TOKEN}"API-118 — Listar injetoras
GET /api/mes/machines
Finalidade: Listar injetoras.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:20 — MesController.machines.
Autenticação, autorização e perfis: @mesAccess.read(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
Sem query parameters, path variables ou headers de negócio declarados.
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: List<MesMachine>. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
[]Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- JSON persistido invalido
Regras de negócio e dependências: MesService.machines. 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/machines" -H "Authorization: Bearer ${TOKEN}"API-119 — Cadastrar injetora
POST /api/mes/machines
Finalidade: Cadastrar injetora.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:21 — MesController.createMachine.
Autenticação, autorização e perfis: @mesAccess.admin(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. 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: MesMachineInput; 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",
"name": "Injetora de exemplo",
"numero": "01",
"marca": "Exemplo",
"modelo": "Exemplo",
"ativo": true,
"testYellow": false,
"testRed": false
}Resposta de sucesso: MesMachine. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"machineId": "Exemplo",
"name": "Exemplo",
"numero": "Exemplo",
"marca": "Exemplo",
"modelo": "Exemplo",
"nozzleMode": "ALWAYS_CONTACT",
"ativo": false,
"testYellow": false,
"testRed": false,
"revision": 1,
"activeExecutionId": "00000000-0000-4000-8000-000000000001",
"mechanicalFault": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- machineId invalido
- Maquina existente
- machineId imutavel
- Finalize a execucao antes de alterar instrumentacao
- JSON persistido invalido
Regras de negócio e dependências: MesService.saveMachine. 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/machines" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"machineId":"DOC.01","name":"Injetora de exemplo","numero":"01","marca":"Exemplo","modelo":"Exemplo","ativo":true,"testYellow":false,"testRed":false}'API-120 — Atualizar injetora
PUT /api/mes/machines/{id}
Finalidade: Atualizar injetora.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:22 — MesController.machine.
Autenticação, autorização e perfis: @mesAccess.admin(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado. Content-Type: application/json para o corpo.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo da requisição: MesMachineInput; 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",
"name": "Injetora de exemplo",
"numero": "01",
"marca": "Exemplo",
"modelo": "Exemplo",
"ativo": true,
"testYellow": false,
"testRed": false
}Resposta de sucesso: MesMachine. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"machineId": "Exemplo",
"name": "Exemplo",
"numero": "Exemplo",
"marca": "Exemplo",
"modelo": "Exemplo",
"nozzleMode": "ALWAYS_CONTACT",
"ativo": false,
"testYellow": false,
"testRed": false,
"revision": 1,
"activeExecutionId": "00000000-0000-4000-8000-000000000001",
"mechanicalFault": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- machineId invalido
- Maquina existente
- machineId imutavel
- Finalize a execucao antes de alterar instrumentacao
- JSON persistido invalido
Regras de negócio e dependências: MesService.saveMachine. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PUT "${BASE_URL}/api/mes/machines/DOC.01" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"machineId":"DOC.01","name":"Injetora de exemplo","numero":"01","marca":"Exemplo","modelo":"Exemplo","ativo":true,"testYellow":false,"testRed":false}'API-121 — Consultar estado da injetora
GET /api/mes/machines/{id}/status
Finalidade: Consultar estado da injetora.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:23 — MesController.status.
Autenticação, autorização e perfis: @mesAccess.read(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesStatus. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"machine": {
"machineId": "Exemplo",
"name": "Exemplo",
"numero": "Exemplo",
"marca": "Exemplo",
"modelo": "Exemplo",
"nozzleMode": "ALWAYS_CONTACT",
"ativo": false,
"testYellow": false,
"testRed": false,
"revision": 1,
"activeExecutionId": "00000000-0000-4000-8000-000000000001",
"mechanicalFault": false
},
"execution": {
"executionId": "00000000-0000-4000-8000-000000000001",
"orderId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"contextRevision": 1,
"status": "Exemplo",
"preparedAt": "2026-10-15T12:00:00Z",
"startedAt": "2026-10-15T12:00:00Z",
"finishedAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"cancelReason": "Exemplo",
"orderCode": "Exemplo",
"productCode": "Exemplo",
"productName": "Exemplo",
"toolCode": "Exemplo",
"material": "Exemplo",
"quantityPieces": 1,
"piecesPerCycle": 1,
"idealCycleMs": 1,
"notes": "Exemplo",
"toolSettings": {
"lot": "Exemplo",
"moldName": "Exemplo",
"nozzleMode": "Exemplo",
"pieceWeightGrams": 1,
"netWeightGrams": 1,
"grossWeightGrams": 1,
"sprueWeightGrams": 1,
"cyclesPerKit": 1
},
"insumos": "Exemplo",
"goodPieces": 1,
"targetReached": false
},
"telemetry": {},
"telemetryAt": "2026-10-15T12:00:00Z",
"hasCompletedCycle": false,
"cycleState": "Exemplo",
"cycleClassification": "Exemplo",
"validationRequired": false,
"validationReason": "Exemplo",
"lastSequence": 1,
"currentCycleElapsedMs": 1,
"lastCycleMs": 1,
"desiredLamp": "Exemplo",
"productionBlocked": false,
"communication": "NO_DATA",
"metrics": {
"grossPieces": 1,
"cycles": 1,
"validCycles": 1,
"averageCycleMs": 1,
"averageInjectionMs": 1,
"averageMoldClosedMs": 1,
"averageMoldNotClosedMs": 1,
"averageNozzleContactMs": 1,
"averageNozzleAwayMs": 1,
"averageDosingMs": 1,
"secondQuality": 1,
"reject": 1,
"residueGrams": 1,
"goodPieces": 1,
"qualityBasis": "Exemplo",
"projection": "Exemplo"
},
"edgeHealth": {},
"collectorHealth": {},
"ingestionHealth": {},
"nozzleModeInferred": {}
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.status. 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/machines/DOC.01/status" -H "Authorization: Bearer ${TOKEN}"API-122 — Listar ordens de serviço
GET /api/mes/orders
Finalidade: Listar ordens de serviço.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:24 — MesController.orders.
Autenticação, autorização e perfis: @mesAccess.read(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
machineId | query | String | Não | — |
page | query | int | Não | 0 |
size | query | int | Não | 25 |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesPage<MesOrder>. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"content": [],
"page": 0,
"size": 1,
"totalElements": 1,
"totalPages": 0
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.orders. 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/orders" -H "Authorization: Bearer ${TOKEN}"API-123 — Cadastrar ordem de serviço
POST /api/mes/orders
Finalidade: Cadastrar ordem de serviço.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:25 — MesController.createOrder.
Autenticação, autorização e perfis: @mesAccess.plan(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. 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: MesOrderInput; 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
{
"orderCode": "OS-DOC-001",
"productCode": "DOC-001",
"productName": "Produto de exemplo",
"quantityPieces": 100,
"piecesPerCycle": 2,
"idealCycleMs": 30000,
"toolCode": "M-DOC-001",
"toolSettings": {
"lot": "LOTE-DOC-001"
},
"notes": "Exemplo documental"
}Resposta de sucesso: MesOrder. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"orderId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"orderCode": "Exemplo",
"productCode": "Exemplo",
"productName": "Exemplo",
"toolCode": "Exemplo",
"material": "Exemplo",
"quantityPieces": 1,
"piecesPerCycle": 1,
"idealCycleMs": 1,
"notes": "Exemplo",
"toolSettings": {
"lot": "Exemplo",
"moldName": "Exemplo",
"nozzleMode": "Exemplo",
"pieceWeightGrams": 1,
"netWeightGrams": 1,
"grossWeightGrams": 1,
"sprueWeightGrams": 1,
"cyclesPerKit": 1
},
"status": "Exemplo",
"queuePosition": 1,
"createdAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"insumos": "Exemplo",
"executionId": "00000000-0000-4000-8000-000000000001",
"goodPieces": 1,
"targetReached": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- OS existente na maquina
- JSON persistido invalido
- toolSettings deve ser objeto
- Parametro de ferramenta desconhecido: [mensagem pode receber complemento dinâmico]
- JSON invalido
Regras de negócio e dependências: MesService.createOrder. 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/orders" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"orderCode":"OS-DOC-001","productCode":"DOC-001","productName":"Produto de exemplo","quantityPieces":100,"piecesPerCycle":2,"idealCycleMs":30000,"toolCode":"M-DOC-001","toolSettings":{"lot":"LOTE-DOC-001"},"notes":"Exemplo documental"}'API-124 — Excluir OS ainda não programada
DELETE /api/mes/orders/{id}
Finalidade: Excluir OS ainda não programada.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:28 — MesController.deleteOrder.
Autenticação, autorização e perfis: @mesAccess.plan(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: sem corpo quando 204.
Códigos HTTP: 204, 400, 401, 403, 404, 409. 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:
- Somente OS em A programar, ainda nao programada, pode ser excluida. Atualize a fila.
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.deleteOrder. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/mes/orders/00000000-0000-4000-8000-000000000001" -H "Authorization: Bearer ${TOKEN}"API-125 — Editar OS sem injetora
PUT /api/mes/orders/{id}
Finalidade: Editar OS sem injetora. Somente QUEUED e machineId nulo. Não há endpoint específico para remover a atribuição de máquina; a mensagem que pede desatribuir não garante que exista esse fluxo.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:29 — MesController.updateOrder.
Autenticação, autorização e perfis: @mesAccess.plan(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado. Content-Type: application/json para o corpo.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo da requisição: MesOrderInput; 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
{
"orderCode": "OS-DOC-001",
"productCode": "DOC-001",
"productName": "Produto de exemplo",
"quantityPieces": 100,
"piecesPerCycle": 2,
"idealCycleMs": 30000,
"toolCode": "M-DOC-001",
"toolSettings": {
"lot": "LOTE-DOC-001"
},
"notes": "Exemplo documental"
}Resposta de sucesso: MesOrder. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"orderId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"orderCode": "Exemplo",
"productCode": "Exemplo",
"productName": "Exemplo",
"toolCode": "Exemplo",
"material": "Exemplo",
"quantityPieces": 1,
"piecesPerCycle": 1,
"idealCycleMs": 1,
"notes": "Exemplo",
"toolSettings": {
"lot": "Exemplo",
"moldName": "Exemplo",
"nozzleMode": "Exemplo",
"pieceWeightGrams": 1,
"netWeightGrams": 1,
"grossWeightGrams": 1,
"sprueWeightGrams": 1,
"cyclesPerKit": 1
},
"status": "Exemplo",
"queuePosition": 1,
"createdAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"insumos": "Exemplo",
"executionId": "00000000-0000-4000-8000-000000000001",
"goodPieces": 1,
"targetReached": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- Somente OS na fila pode ser editada
- OS já atribuída a uma injetora não pode ser editada; desatribua primeiro
- OS existente com este código
- JSON persistido invalido
- UUID invalido
- toolSettings deve ser objeto
- Parametro de ferramenta desconhecido: [mensagem pode receber complemento dinâmico]
- JSON invalido
Regras de negócio e dependências: MesService.updateOrder. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PUT "${BASE_URL}/api/mes/orders/00000000-0000-4000-8000-000000000001" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"orderCode":"OS-DOC-001","productCode":"DOC-001","productName":"Produto de exemplo","quantityPieces":100,"piecesPerCycle":2,"idealCycleMs":30000,"toolCode":"M-DOC-001","toolSettings":{"lot":"LOTE-DOC-001"},"notes":"Exemplo documental"}'API-126 — Extrair prévia de OS de PDF
POST /api/mes/orders/import-preview
Finalidade: Extrair prévia de OS de PDF. multipart/form-data, campo file. Primeiro extração de texto; fallback OCR da primeira página. Retorna prévia, não cria ordem. Sem orderCode reconhecido retorna erro.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:31 — MesController.importPreview.
Autenticação, autorização e perfis: @mesAccess.plan(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
Sem query parameters, path variables ou headers de negócio declarados.
Corpo: arquivo PDF em multipart, campo obrigatório file; não enviar JSON.
Resposta de sucesso: MesImportPreview. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{}Códigos HTTP: 200, 400, 401, 403, 404, 409. Códigos de segurança dependem da cadeia de filtros; falhas não capturadas podem chegar ao tratamento global descrito em Erros.
Regras de negócio e dependências: Implementação no próprio controller. 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/orders/import-preview" -H "Authorization: Bearer ${TOKEN}" -F 'file=@ordem.pdf;type=application/pdf'API-127 — Alterar prioridade e injetora da fila
PUT /api/mes/orders/{id}/position
Finalidade: Alterar prioridade e injetora da fila.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:67 — MesController.position.
Autenticação, autorização e perfis: @mesAccess.plan(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado. Content-Type: application/json para o corpo.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo da requisição: MesPositionInput; 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
{
"queuePosition": 0,
"machineId": "DOC.01"
}Resposta de sucesso: MesOrder. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"orderId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"orderCode": "Exemplo",
"productCode": "Exemplo",
"productName": "Exemplo",
"toolCode": "Exemplo",
"material": "Exemplo",
"quantityPieces": 1,
"piecesPerCycle": 1,
"idealCycleMs": 1,
"notes": "Exemplo",
"toolSettings": {
"lot": "Exemplo",
"moldName": "Exemplo",
"nozzleMode": "Exemplo",
"pieceWeightGrams": 1,
"netWeightGrams": 1,
"grossWeightGrams": 1,
"sprueWeightGrams": 1,
"cyclesPerKit": 1
},
"status": "Exemplo",
"queuePosition": 1,
"createdAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"insumos": "Exemplo",
"executionId": "00000000-0000-4000-8000-000000000001",
"goodPieces": 1,
"targetReached": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- Somente OS na fila pode mudar prioridade
- A injetora da OS mudou; atualize a fila
- OS existente na maquina
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.position. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PUT "${BASE_URL}/api/mes/orders/00000000-0000-4000-8000-000000000001/position" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"queuePosition":0,"machineId":"DOC.01"}'API-128 — Atribuir injetora à OS
PUT /api/mes/orders/{id}/machine
Finalidade: Atribuir injetora à OS.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:68 — MesController.assignMachine.
Autenticação, autorização e perfis: @mesAccess.plan(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado. Content-Type: application/json para o corpo.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo da requisição: MesAssignInput; 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"
}Resposta de sucesso: MesOrder. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"orderId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"orderCode": "Exemplo",
"productCode": "Exemplo",
"productName": "Exemplo",
"toolCode": "Exemplo",
"material": "Exemplo",
"quantityPieces": 1,
"piecesPerCycle": 1,
"idealCycleMs": 1,
"notes": "Exemplo",
"toolSettings": {
"lot": "Exemplo",
"moldName": "Exemplo",
"nozzleMode": "Exemplo",
"pieceWeightGrams": 1,
"netWeightGrams": 1,
"grossWeightGrams": 1,
"sprueWeightGrams": 1,
"cyclesPerKit": 1
},
"status": "Exemplo",
"queuePosition": 1,
"createdAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"insumos": "Exemplo",
"executionId": "00000000-0000-4000-8000-000000000001",
"goodPieces": 1,
"targetReached": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- Somente OS na fila pode trocar de injetora
- OS existente na maquina
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.assignMachine. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PUT "${BASE_URL}/api/mes/orders/00000000-0000-4000-8000-000000000001/machine" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"machineId":"DOC.01"}'API-129 — Preparar execução
POST /api/mes/orders/{id}/prepare
Finalidade: Preparar execução.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:69 — MesController.prepare.
Autenticação, autorização e perfis: @mesAccess.plan(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesExecution. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"executionId": "00000000-0000-4000-8000-000000000001",
"orderId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"contextRevision": 1,
"status": "Exemplo",
"preparedAt": "2026-10-15T12:00:00Z",
"startedAt": "2026-10-15T12:00:00Z",
"finishedAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"cancelReason": "Exemplo",
"orderCode": "Exemplo",
"productCode": "Exemplo",
"productName": "Exemplo",
"toolCode": "Exemplo",
"material": "Exemplo",
"quantityPieces": 1,
"piecesPerCycle": 1,
"idealCycleMs": 1,
"notes": "Exemplo",
"toolSettings": {
"lot": "Exemplo",
"moldName": "Exemplo",
"nozzleMode": "Exemplo",
"pieceWeightGrams": 1,
"netWeightGrams": 1,
"grossWeightGrams": 1,
"sprueWeightGrams": 1,
"cyclesPerKit": 1
},
"insumos": "Exemplo",
"goodPieces": 1,
"targetReached": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- Atribua uma injetora antes de preparar a OS
- OS ja preparada
- JSON persistido invalido
- UUID invalido
- JSON invalido
Regras de negócio e dependências: MesService.prepare. 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/orders/00000000-0000-4000-8000-000000000001/prepare" -H "Authorization: Bearer ${TOKEN}"API-130 — Desfazer preparo
POST /api/mes/executions/{id}/unprepare
Finalidade: Desfazer preparo.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:70 — MesController.unprepare.
Autenticação, autorização e perfis: @mesAccess.plan(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesOrder. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"orderId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"orderCode": "Exemplo",
"productCode": "Exemplo",
"productName": "Exemplo",
"toolCode": "Exemplo",
"material": "Exemplo",
"quantityPieces": 1,
"piecesPerCycle": 1,
"idealCycleMs": 1,
"notes": "Exemplo",
"toolSettings": {
"lot": "Exemplo",
"moldName": "Exemplo",
"nozzleMode": "Exemplo",
"pieceWeightGrams": 1,
"netWeightGrams": 1,
"grossWeightGrams": 1,
"sprueWeightGrams": 1,
"cyclesPerKit": 1
},
"status": "Exemplo",
"queuePosition": 1,
"createdAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"insumos": "Exemplo",
"executionId": "00000000-0000-4000-8000-000000000001",
"goodPieces": 1,
"targetReached": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- Execucao nao esta preparada
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.unprepare. 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/executions/00000000-0000-4000-8000-000000000001/unprepare" -H "Authorization: Bearer ${TOKEN}"API-131 — Consultar execução
GET /api/mes/executions/{id}
Finalidade: Consultar execução.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:71 — MesController.execution.
Autenticação, autorização e perfis: @mesAccess.read(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesExecution. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"executionId": "00000000-0000-4000-8000-000000000001",
"orderId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"contextRevision": 1,
"status": "Exemplo",
"preparedAt": "2026-10-15T12:00:00Z",
"startedAt": "2026-10-15T12:00:00Z",
"finishedAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"cancelReason": "Exemplo",
"orderCode": "Exemplo",
"productCode": "Exemplo",
"productName": "Exemplo",
"toolCode": "Exemplo",
"material": "Exemplo",
"quantityPieces": 1,
"piecesPerCycle": 1,
"idealCycleMs": 1,
"notes": "Exemplo",
"toolSettings": {
"lot": "Exemplo",
"moldName": "Exemplo",
"nozzleMode": "Exemplo",
"pieceWeightGrams": 1,
"netWeightGrams": 1,
"grossWeightGrams": 1,
"sprueWeightGrams": 1,
"cyclesPerKit": 1
},
"insumos": "Exemplo",
"goodPieces": 1,
"targetReached": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.execution. 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/executions/00000000-0000-4000-8000-000000000001" -H "Authorization: Bearer ${TOKEN}"API-132 — Iniciar produção
POST /api/mes/executions/{id}/start
Finalidade: Iniciar produção.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:72 — MesController.start.
Autenticação, autorização e perfis: @mesAccess.operate(authentication) or @mesAccess.plan(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesExecution. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"executionId": "00000000-0000-4000-8000-000000000001",
"orderId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"contextRevision": 1,
"status": "Exemplo",
"preparedAt": "2026-10-15T12:00:00Z",
"startedAt": "2026-10-15T12:00:00Z",
"finishedAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"cancelReason": "Exemplo",
"orderCode": "Exemplo",
"productCode": "Exemplo",
"productName": "Exemplo",
"toolCode": "Exemplo",
"material": "Exemplo",
"quantityPieces": 1,
"piecesPerCycle": 1,
"idealCycleMs": 1,
"notes": "Exemplo",
"toolSettings": {
"lot": "Exemplo",
"moldName": "Exemplo",
"nozzleMode": "Exemplo",
"pieceWeightGrams": 1,
"netWeightGrams": 1,
"grossWeightGrams": 1,
"sprueWeightGrams": 1,
"cyclesPerKit": 1
},
"insumos": "Exemplo",
"goodPieces": 1,
"targetReached": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- Execucao nao esta preparada
- Maquina ja tem execucao ativa
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.start. 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/executions/00000000-0000-4000-8000-000000000001/start" -H "Authorization: Bearer ${TOKEN}"API-133 — Finalizar produção após atingir meta
POST /api/mes/executions/{id}/finish
Finalidade: Finalizar produção após atingir meta. Exige RUNNING e peças de primeira qualidade >= meta. Libera a injetora. Excedente continua contando até a finalização.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:73 — MesController.finish.
Autenticação, autorização e perfis: @mesAccess.operate(authentication) or @mesAccess.plan(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesExecution. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"executionId": "00000000-0000-4000-8000-000000000001",
"orderId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"contextRevision": 1,
"status": "Exemplo",
"preparedAt": "2026-10-15T12:00:00Z",
"startedAt": "2026-10-15T12:00:00Z",
"finishedAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"cancelReason": "Exemplo",
"orderCode": "Exemplo",
"productCode": "Exemplo",
"productName": "Exemplo",
"toolCode": "Exemplo",
"material": "Exemplo",
"quantityPieces": 1,
"piecesPerCycle": 1,
"idealCycleMs": 1,
"notes": "Exemplo",
"toolSettings": {
"lot": "Exemplo",
"moldName": "Exemplo",
"nozzleMode": "Exemplo",
"pieceWeightGrams": 1,
"netWeightGrams": 1,
"grossWeightGrams": 1,
"sprueWeightGrams": 1,
"cyclesPerKit": 1
},
"insumos": "Exemplo",
"goodPieces": 1,
"targetReached": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- Execucao nao esta em producao
- Producao ainda nao atingiu a meta de pecas de primeira qualidade
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.finish. 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/executions/00000000-0000-4000-8000-000000000001/finish" -H "Authorization: Bearer ${TOKEN}"API-134 — Retirar OS da injetora
POST /api/mes/executions/{id}/reallocate
Finalidade: Retirar OS da injetora. Exige RUNNING e motivo. Encerra ordem e execução em CANCELLED; preserva produção e não cria OS com saldo restante.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:74 — MesController.reallocate.
Autenticação, autorização e perfis: @mesAccess.operate(authentication) or @mesAccess.plan(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado. Content-Type: application/json para o corpo.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo da requisição: MesReasonInput; 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
{
"reason": "Mudança de programação"
}Resposta de sucesso: MesExecution. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"executionId": "00000000-0000-4000-8000-000000000001",
"orderId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"contextRevision": 1,
"status": "Exemplo",
"preparedAt": "2026-10-15T12:00:00Z",
"startedAt": "2026-10-15T12:00:00Z",
"finishedAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"cancelReason": "Exemplo",
"orderCode": "Exemplo",
"productCode": "Exemplo",
"productName": "Exemplo",
"toolCode": "Exemplo",
"material": "Exemplo",
"quantityPieces": 1,
"piecesPerCycle": 1,
"idealCycleMs": 1,
"notes": "Exemplo",
"toolSettings": {
"lot": "Exemplo",
"moldName": "Exemplo",
"nozzleMode": "Exemplo",
"pieceWeightGrams": 1,
"netWeightGrams": 1,
"grossWeightGrams": 1,
"sprueWeightGrams": 1,
"cyclesPerKit": 1
},
"insumos": "Exemplo",
"goodPieces": 1,
"targetReached": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- Execucao nao esta em producao
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.reallocate. 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/executions/00000000-0000-4000-8000-000000000001/reallocate" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"reason":"Mudança de programação"}'API-135 — Registrar refugo e resíduo
POST /api/mes/executions/{id}/quality
Finalidade: Registrar refugo e resíduo. Refugo/resíduo são acréscimos. Motivo obrigatório; ao menos refugo ou resíduo deve ser positivo. Até 3 casas decimais para resíduo. O serviço não exige RUNNING: não equiparar restrição da tela à autorização da API.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:75 — MesController.quality.
Autenticação, autorização e perfis: @mesAccess.operate(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado. Content-Type: application/json para o corpo.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo da requisição: MesQualityInput; 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
{
"reject": 1,
"residueGrams": 0,
"notes": "Peça fora do padrão"
}Resposta de sucesso: MesQuality. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"qualityId": "00000000-0000-4000-8000-000000000001",
"executionId": "00000000-0000-4000-8000-000000000001",
"secondQuality": 1,
"reject": 1,
"residueGrams": 1,
"notes": "Exemplo",
"createdAt": "2026-10-15T12:00:00Z",
"author": "Exemplo"
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- residueGrams deve ser numerico
- Residuo invalido; use ate 3 casas decimais
- Motivo/observacao e obrigatorio
- Informe refugo ou residuo
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.quality. 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/executions/00000000-0000-4000-8000-000000000001/quality" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"reject":1,"residueGrams":0,"notes":"Peça fora do padrão"}'API-136 — Consultar apontamentos de qualidade
GET /api/mes/executions/{id}/quality
Finalidade: Consultar apontamentos de qualidade.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:76 — MesController.qualities.
Autenticação, autorização e perfis: @mesAccess.read(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
page | query | int | Não | 0 |
size | query | int | Não | 25 |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesPage<MesQuality>. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"content": [],
"page": 0,
"size": 1,
"totalElements": 1,
"totalPages": 0
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- JSON persistido invalido
- UUID invalido
Regras de negócio e dependências: MesService.qualities. 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/executions/00000000-0000-4000-8000-000000000001/quality" -H "Authorization: Bearer ${TOKEN}"API-137 — Registrar ou complementar parada
POST /api/mes/machines/{id}/downtimes
Finalidade: Registrar ou complementar parada. Autorização no corpo: MECHANICAL exige maintain; demais valores passam por operate antes da validação do kind. Uma ocorrência existente pode receber nova causa ou ser escalada para mecânica.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:77 — MesController.downtime.
Autenticação, autorização e perfis: Usuário autenticado; sem autoridade adicional declarada no método. Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado. Content-Type: application/json para o corpo.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo da requisição: MesDowntimeInput; 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
{
"kind": "OPERATIONAL",
"reason": "Ajuste operacional",
"notes": "Exemplo documental"
}Resposta de sucesso: MesDowntime. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"downtimeId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"executionId": "00000000-0000-4000-8000-000000000001",
"kind": "Exemplo",
"reason": "Exemplo",
"notes": "Exemplo",
"startedAt": "2026-10-15T12:00:00Z",
"releasedAt": "2026-10-15T12:00:00Z",
"recoveredAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"releasedBy": "Exemplo",
"releaseNotes": "Exemplo",
"category": "Exemplo",
"source": "Exemplo",
"mergedInto": "00000000-0000-4000-8000-000000000001"
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- JSON persistido invalido
- UUID 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: MesAccess.maintain, MesAccess.operate, MesService.downtime. 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/machines/DOC.01/downtimes" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"kind":"OPERATIONAL","reason":"Ajuste operacional","notes":"Exemplo documental"}'API-138 — Liberar parada
POST /api/mes/downtimes/{id}/release
Finalidade: Liberar parada. Exige read e maintain para parada mecânica, operate para operacional. Somente ocorrência principal e ainda não liberada. Mecânica aguarda ciclo válido para recuperação.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:81 — MesController.release.
Autenticação, autorização e perfis: Usuário autenticado; sem autoridade adicional declarada no método. Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado. Content-Type: application/json para o corpo.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo da requisição: MesReleaseInput; 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
{
"notes": "Intervenção concluída"
}Resposta de sucesso: MesDowntime. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"downtimeId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"executionId": "00000000-0000-4000-8000-000000000001",
"kind": "Exemplo",
"reason": "Exemplo",
"notes": "Exemplo",
"startedAt": "2026-10-15T12:00:00Z",
"releasedAt": "2026-10-15T12:00:00Z",
"recoveredAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"releasedBy": "Exemplo",
"releaseNotes": "Exemplo",
"category": "Exemplo",
"source": "Exemplo",
"mergedInto": "00000000-0000-4000-8000-000000000001"
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- JSON persistido invalido
- UUID invalido
- Libere a ocorrência principal desta parada
- Ocorrencia ja liberada
Regras de negócio e dependências: MesAccess.read, MesService.downtimeById, MesAccess.maintain, MesAccess.operate, MesService.release. 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/downtimes/00000000-0000-4000-8000-000000000001/release" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"notes":"Intervenção concluída"}'API-139 — Consultar paradas por período
GET /api/mes/machines/{id}/downtimes
Finalidade: Consultar paradas por período.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:87 — MesController.downtimes.
Autenticação, autorização e perfis: @mesAccess.read(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
from | query | Instant | Sim | — |
to | query | Instant | Sim | — |
page | query | int | Não | 0 |
size | query | int | Não | 25 |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesPage<MesDowntime>. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"content": [],
"page": 0,
"size": 1,
"totalElements": 1,
"totalPages": 0
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- JSON persistido invalido
Regras de negócio e dependências: MesService.downtimes. 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/machines/DOC.01/downtimes?from=2026-10-01T00%3A00%3A00Z&to=2026-10-15T00%3A00%3A00Z" -H "Authorization: Bearer ${TOKEN}"API-140 — Consultar parada aberta e ocorrências vinculadas
GET /api/mes/machines/{id}/downtimes/active
Finalidade: Consultar parada aberta e ocorrências vinculadas.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:88 — MesController.activeDowntime.
Autenticação, autorização e perfis: @mesAccess.read(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
id | path | String | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesActiveDowntime. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"active": {
"downtimeId": "00000000-0000-4000-8000-000000000001",
"machineId": "Exemplo",
"executionId": "00000000-0000-4000-8000-000000000001",
"kind": "Exemplo",
"reason": "Exemplo",
"notes": "Exemplo",
"startedAt": "2026-10-15T12:00:00Z",
"releasedAt": "2026-10-15T12:00:00Z",
"recoveredAt": "2026-10-15T12:00:00Z",
"author": "Exemplo",
"releasedBy": "Exemplo",
"releaseNotes": "Exemplo",
"category": "Exemplo",
"source": "Exemplo",
"mergedInto": "00000000-0000-4000-8000-000000000001"
},
"linked": []
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- JSON persistido invalido
Regras de negócio e dependências: MesService.activeDowntime. 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/machines/DOC.01/downtimes/active" -H "Authorization: Bearer ${TOKEN}"API-141 — Consolidar indicadores de produção
GET /api/mes/reports
Finalidade: Consolidar indicadores de produção. Período positivo de até 1826 dias. Totais de qualidade têm base EXECUTION; executionTotals, quando presente, representa a OS completa.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:89 — MesController.reports.
Autenticação, autorização e perfis: @mesAccess.read(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
machineId | query | String | Não | — |
executionId | query | String | Não | — |
from | query | Instant | Sim | — |
to | query | Instant | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesReport. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"grossPieces": 1,
"cycles": 1,
"validCycles": 1,
"averageCycleMs": 1,
"averageInjectionMs": 1,
"averageMoldClosedMs": 1,
"averageMoldNotClosedMs": 1,
"averageNozzleContactMs": 1,
"averageNozzleAwayMs": 1,
"averageDosingMs": 1,
"secondQuality": 1,
"reject": 1,
"residueGrams": 1,
"goodPieces": 1,
"qualityBasis": "Exemplo",
"projection": "Exemplo",
"executionTotals": {
"grossPieces": 1,
"cycles": 1,
"validCycles": 1,
"averageCycleMs": 1,
"averageInjectionMs": 1,
"averageMoldClosedMs": 1,
"averageMoldNotClosedMs": 1,
"averageNozzleContactMs": 1,
"averageNozzleAwayMs": 1,
"averageDosingMs": 1,
"secondQuality": 1,
"reject": 1,
"residueGrams": 1,
"goodPieces": 1,
"qualityBasis": "Exemplo",
"projection": "Exemplo"
}
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- UUID invalido
- JSON persistido invalido
Regras de negócio e dependências: MesService.reports. 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/reports?from=2026-10-01T00%3A00%3A00Z&to=2026-10-15T00%3A00%3A00Z" -H "Authorization: Bearer ${TOKEN}"API-142 — Consultar resultados de ciclos
GET /api/mes/history
Finalidade: Consultar resultados de ciclos.
Fonte: src/main/java/com/wester/storage/mes/MesController.java:90 — MesController.history.
Autenticação, autorização e perfis: @mesAccess.read(authentication) Consulte a correspondência entre autoridades e perfis em Autenticação.
Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.
Parâmetros:
| Nome | Local | Tipo | Obrigatório | Padrão |
|---|---|---|---|---|
machineId | query | String | Não | — |
executionId | query | String | Não | — |
from | query | Instant | Sim | — |
to | query | Instant | Sim | — |
page | query | int | Não | 0 |
size | query | int | Não | 25 |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: MesPage<MesCycleOutcome>. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"content": [],
"page": 0,
"size": 1,
"totalElements": 1,
"totalPages": 0
}Códigos HTTP: 200, 400, 401, 403, 404, 409. 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:
- UUID invalido
- JSON persistido invalido
Regras de negócio e dependências: MesService.history. 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/history?from=2026-10-01T00%3A00%3A00Z&to=2026-10-15T00%3A00%3A00Z" -H "Authorization: Bearer ${TOKEN}"