Tema
Materiais fixos e slots legados
API-064 — Listar
GET /api/nivel-materiais/nivel/{nivelId}
Finalidade: Listar.
Fonte: src/main/java/com/wester/storage/controller/NivelMaterialController.java:27 — NivelMaterialController.listar.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') 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 |
|---|---|---|---|---|
nivelId | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: List<NivelMaterialResponseDTO>. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
[]Códigos HTTP: 200, 401, 403. 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: NivelMaterialService.listarMateriais. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/nivel-materiais/nivel/1" -H "Authorization: Bearer ${TOKEN}"API-065 — Alocar Batch
POST /api/nivel-materiais/nivel/{nivelId}/alocar-batch
Finalidade: Alocar Batch. Ignora duplicatas por nível/material/tipo. Produto exige quantidade > 0; molde ativo é validado. Os tipos configurados na área não são validados neste método; materialId de produto não recebe a mesma validação de existência aplicada a molde.
Fonte: src/main/java/com/wester/storage/controller/NivelMaterialController.java:34 — NivelMaterialController.alocarBatch.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') and hasRole('FULL_ACCESS') 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 |
|---|---|---|---|---|
nivelId | path | Long | Sim | — |
Corpo da requisição: AlocarMateriaisRequestDTO; obrigatório. Validação Jakarta ativada por @Valid. Consulte os campos e restrições em Modelos.
Exemplo sintético (IDs devem existir e versões devem vir de consulta):
json
{
"materiais": [
{
"materialId": 1,
"materialType": "PRODUTO",
"quantidade": 10,
"quantidadeAproximada": false
}
]
}Resposta de sucesso: List<NivelMaterialResponseDTO>. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
[]Códigos HTTP: 200, 400, 401, 403. 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:
- Nível desativado não pode receber alocações.
- Molde não encontrado: [mensagem pode receber complemento dinâmico]
- Molde inativo não pode ser alocado: [mensagem pode receber complemento dinâmico]
- Informe a quantidade do produto id=
Regras de negócio e dependências: NivelMaterialService.alocarMateriais. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/nivel-materiais/nivel/1/alocar-batch" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"materiais":[{"materialId":1,"materialType":"PRODUTO","quantidade":10,"quantidadeAproximada":false}]}'API-066 — Remover
DELETE /api/nivel-materiais/{nivelMaterialId}
Finalidade: Remover.
Fonte: src/main/java/com/wester/storage/controller/NivelMaterialController.java:43 — NivelMaterialController.remover.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') and hasRole('FULL_ACCESS') 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 |
|---|---|---|---|---|
nivelMaterialId | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: sem corpo quando 204.
Códigos HTTP: 204, 401, 403. 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: NivelMaterialService.removerMaterial. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/nivel-materiais/1" -H "Authorization: Bearer ${TOKEN}"API-067 — Atualizar Quantidade
PATCH /api/nivel-materiais/{nivelMaterialId}/quantidade
Finalidade: Atualizar Quantidade.
Fonte: src/main/java/com/wester/storage/controller/NivelMaterialController.java:51 — NivelMaterialController.atualizarQuantidade.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') and hasRole('FULL_ACCESS') 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 |
|---|---|---|---|---|
nivelMaterialId | path | Long | Sim | — |
Corpo da requisição: AtualizarQuantidadeNivelMaterialRequestDTO; obrigatório. Validação Jakarta ativada por @Valid. Consulte os campos e restrições em Modelos.
Exemplo sintético (IDs devem existir e versões devem vir de consulta):
json
{
"quantidade": 1,
"quantidadeAproximada": false
}Resposta de sucesso: NivelMaterialResponseDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"nivelId": 1,
"materialId": 1,
"materialType": "MOLDE",
"materialCodigo": "Exemplo",
"materialDescricao": "Exemplo",
"materialCategoria": "Exemplo",
"produtoDescricao": "Exemplo",
"ordem": 1,
"quantidade": 1,
"quantidadeAproximada": false
}Códigos HTTP: 200, 400, 401, 403. 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:
- Ajuste de quantidade disponível apenas para produtos.
- Quantidade não pode ser negativa.
Regras de negócio e dependências: NivelMaterialService.atualizarQuantidadeProduto. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PATCH "${BASE_URL}/api/nivel-materiais/1/quantidade" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"quantidade":1,"quantidadeAproximada":false}'API-068 — Limpar
DELETE /api/nivel-materiais/nivel/{nivelId}/limpar
Finalidade: Limpar.
Fonte: src/main/java/com/wester/storage/controller/NivelMaterialController.java:62 — NivelMaterialController.limpar.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') and hasRole('FULL_ACCESS') 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 |
|---|---|---|---|---|
nivelId | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: sem corpo quando 204.
Códigos HTTP: 204, 401, 403. 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: NivelMaterialService.limparNivel. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/nivel-materiais/nivel/1/limpar" -H "Authorization: Bearer ${TOKEN}"API-089 — Listar slots de um nível com seus moldes alocados
GET /api/slots/nivel/{nivelId}
Finalidade: Listar slots de um nível com seus moldes alocados.
Fonte: src/main/java/com/wester/storage/controller/SlotNivelController.java:35 — SlotNivelController.listarPorNivel.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') 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 |
|---|---|---|---|---|
nivelId | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: List<SlotNivelResponseDTO>. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
[]Códigos HTTP: 200, 401, 403. 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: SlotNivelService.listarSlotsPorNivel. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/slots/nivel/1" -H "Authorization: Bearer ${TOKEN}"API-090 — Buscar todas as estantes de uma área fixa (batch — substitui N chamadas por fileira)
GET /api/slots/area/{areaId}
Finalidade: Buscar todas as estantes de uma área fixa (batch — substitui N chamadas por fileira).
Fonte: src/main/java/com/wester/storage/controller/SlotNivelController.java:41 — SlotNivelController.buscarPorArea.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') 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 |
|---|---|---|---|---|
areaId | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: List<EstanteFixaResponseDTO>. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
[]Códigos HTTP: 200, 401, 403. 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: SlotNivelService.buscarEstantesPorArea. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/slots/area/1" -H "Authorization: Bearer ${TOKEN}"API-091 — Buscar estrutura completa de uma estante (fileira fixa) com níveis e slots
GET /api/slots/estante/{fileiraId}
Finalidade: Buscar estrutura completa de uma estante (fileira fixa) com níveis e slots.
Fonte: src/main/java/com/wester/storage/controller/SlotNivelController.java:47 — SlotNivelController.buscarEstante.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') 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 |
|---|---|---|---|---|
fileiraId | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: EstanteFixaResponseDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"fileiraId": 1,
"fileiraIdentificador": "Exemplo",
"fileiraOrdem": 1,
"grades": []
}Códigos HTTP: 200, 401, 403, 404. 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: SlotNivelService.buscarEstanteComSlots. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/slots/estante/1" -H "Authorization: Bearer ${TOKEN}"API-092 — Inicializar slots físicos de um nível (cria N posições; idempotente)
POST /api/slots/nivel/{nivelId}/inicializar
Finalidade: Inicializar slots físicos de um nível (cria N posições; idempotente).
Fonte: src/main/java/com/wester/storage/controller/SlotNivelController.java:59 — SlotNivelController.inicializarSlots.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') and hasRole('FULL_ACCESS') 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 |
|---|---|---|---|---|
nivelId | path | Long | Sim | — |
quantidade | query | int | Não | 2 |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: List<SlotNivelResponseDTO>. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
[]Códigos HTTP: 201, 400, 401, 403, 404. 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:
- A quantidade de slots deve ser entre 1 e 10.
Regras de negócio e dependências: SlotNivelService.inicializarSlots. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/slots/nivel/1/inicializar" -H "Authorization: Bearer ${TOKEN}"API-093 — Adicionar um slot individual em um nivel fixo
POST /api/slots/nivel/{nivelId}
Finalidade: Adicionar um slot individual em um nivel fixo.
Fonte: src/main/java/com/wester/storage/controller/SlotNivelController.java:76 — SlotNivelController.adicionarSlot.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') and hasRole('FULL_ACCESS') 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 |
|---|---|---|---|---|
nivelId | path | Long | Sim | — |
Corpo da requisição: SlotNivelRequestDTO; opcional. Validação Jakarta ativada por @Valid. Consulte os campos e restrições em Modelos.
Exemplo sintético (IDs devem existir e versões devem vir de consulta):
json
{
"posicao": 1,
"identificador": "Exemplo"
}Resposta de sucesso: SlotNivelResponseDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"nivelId": 1,
"posicao": 1,
"identificador": "Exemplo",
"moldesAlocados": []
}Códigos HTTP: 201, 400, 401, 403, 404. 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:
- Identificador do slot é obrigatório.
- Posição de slot já existe neste nível: [mensagem pode receber complemento dinâmico]
- Identificador de slot já existe neste nível: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: SlotNivelService.adicionarSlot. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/slots/nivel/1" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"posicao":1,"identificador":"Exemplo"}'API-094 — Editar um slot fixo
PATCH /api/slots/{slotId}
Finalidade: Editar um slot fixo.
Fonte: src/main/java/com/wester/storage/controller/SlotNivelController.java:96 — SlotNivelController.atualizarSlot.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') and hasRole('FULL_ACCESS') 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 |
|---|---|---|---|---|
slotId | path | Long | Sim | — |
Corpo da requisição: SlotNivelRequestDTO; obrigatório. Validação Jakarta ativada por @Valid. Consulte os campos e restrições em Modelos.
Exemplo sintético (IDs devem existir e versões devem vir de consulta):
json
{
"posicao": 1,
"identificador": "Exemplo"
}Resposta de sucesso: SlotNivelResponseDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"nivelId": 1,
"posicao": 1,
"identificador": "Exemplo",
"moldesAlocados": []
}Códigos HTTP: 200, 400, 401, 403, 404. 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:
- Identificador do slot é obrigatório.
- Posição de slot já existe neste nível: [mensagem pode receber complemento dinâmico]
- Identificador de slot já existe neste nível: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: SlotNivelService.atualizarSlot. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PATCH "${BASE_URL}/api/slots/1" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"posicao":1,"identificador":"Exemplo"}'API-095 — Remover um slot fixo vazio
DELETE /api/slots/{slotId}
Finalidade: Remover um slot fixo vazio.
Fonte: src/main/java/com/wester/storage/controller/SlotNivelController.java:112 — SlotNivelController.removerSlot.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') and hasRole('FULL_ACCESS') 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 |
|---|---|---|---|---|
slotId | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: sem corpo quando 204.
Códigos HTTP: 204, 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:
- Não é possível remover um slot ocupado.
Regras de negócio e dependências: SlotNivelService.removerSlot. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/slots/1" -H "Authorization: Bearer ${TOKEN}"API-096 — Alocar um molde em um slot
POST /api/slots/{slotId}/alocar
Finalidade: Alocar um molde em um slot.
Fonte: src/main/java/com/wester/storage/controller/SlotNivelController.java:126 — SlotNivelController.alocar.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') and hasRole('FULL_ACCESS') 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 |
|---|---|---|---|---|
slotId | path | Long | Sim | — |
Corpo da requisição: AlocarMoldeRequestDTO; obrigatório. Validação Jakarta ativada por @Valid. Consulte os campos e restrições em Modelos.
Exemplo sintético (IDs devem existir e versões devem vir de consulta):
json
{
"moldeId": 1,
"ordem": 1
}Resposta de sucesso: SlotNivelResponseDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"nivelId": 1,
"posicao": 1,
"identificador": "Exemplo",
"moldesAlocados": []
}Códigos HTTP: 201, 400, 401, 403, 404. 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:
- O molde está inativo e não pode ser alocado.
- Este molde já está alocado neste slot.
Regras de negócio e dependências: SlotNivelService.alocarMolde. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/slots/1/alocar" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"moldeId":1,"ordem":1}'API-097 — Remover um molde específico de um slot
DELETE /api/slots/{slotId}/moldes/{moldeAlocadoId}
Finalidade: Remover um molde específico de um slot.
Fonte: src/main/java/com/wester/storage/controller/SlotNivelController.java:143 — SlotNivelController.removerMolde.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') and hasRole('FULL_ACCESS') 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 |
|---|---|---|---|---|
slotId | path | Long | Sim | — |
moldeAlocadoId | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: sem corpo quando 204.
Códigos HTTP: 204, 400, 401, 403, 404. 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:
- A alocação não pertence ao slot informado.
Regras de negócio e dependências: SlotNivelService.removerMolde. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/slots/1/moldes/1" -H "Authorization: Bearer ${TOKEN}"API-098 — Limpar todos os moldes de um slot
DELETE /api/slots/{slotId}/limpar
Finalidade: Limpar todos os moldes de um slot.
Fonte: src/main/java/com/wester/storage/controller/SlotNivelController.java:160 — SlotNivelController.limparSlot.
Autenticação, autorização e perfis: hasAuthority('SCREEN_WAREHOUSE') and hasRole('FULL_ACCESS') 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 |
|---|---|---|---|---|
slotId | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: sem corpo quando 204.
Códigos HTTP: 204, 401, 403, 404. 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: SlotNivelService.limparSlot. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/slots/1/limpar" -H "Authorization: Bearer ${TOKEN}"