Tema
Itens e transferências de estoque
API-040 — Buscar Por Nivel
GET /api/itens-estoque/nivel/{nivelId}
Finalidade: Buscar Por Nivel. Nível existente sem item retorna 204. Nível inexistente lança IllegalArgumentException no serviço, tratado como 400; a anotação declara 404, mas não representa esse ramo real.
Fonte: src/main/java/com/wester/storage/controller/ItemEstoqueController.java:50 — ItemEstoqueController.buscarPorNivel.
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: ItemEstoqueDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"version": 0,
"nivelId": 1,
"nivelIdentificador": "Exemplo",
"nivelCompletoIdentificador": "Exemplo",
"produtoId": 1,
"produtoCodigoWester": "Exemplo",
"produtoNomeModelo": "Exemplo",
"produtoCor": "Exemplo",
"produtoDescricao": "Exemplo",
"observacao": "Exemplo",
"quantidade": 1,
"quantidadeAproximada": false,
"dataAtualizacao": "2026-10-15T09:00:00"
}Códigos HTTP: 200, 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.
Validações e erros identificados na cadeia local do serviço:
- nivelId não pode ser nulo.
- Nível não encontrado: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: ItemEstoqueService.buscarPorNivel. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/itens-estoque/nivel/1" -H "Authorization: Bearer ${TOKEN}"API-041 — Create or update ItemEstoque by nivelId (UPSERT)
PUT /api/itens-estoque/nivel/{nivelId}
Finalidade: Create or update ItemEstoque by nivelId (UPSERT).
Fonte: src/main/java/com/wester/storage/controller/ItemEstoqueController.java:67 — ItemEstoqueController.upsertPorNivel.
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: ItemEstoqueUpsertRequestDTO; 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": 10,
"quantidadeAproximada": false,
"observacao": "Contagem conferida",
"produto": {
"codigoSistemaWester": "DOC-001",
"nomeModelo": "Produto de exemplo",
"cor": "Preto",
"descricao": "Exemplo documental"
}
}Resposta de sucesso: ItemEstoqueDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"version": 0,
"nivelId": 1,
"nivelIdentificador": "Exemplo",
"nivelCompletoIdentificador": "Exemplo",
"produtoId": 1,
"produtoCodigoWester": "Exemplo",
"produtoNomeModelo": "Exemplo",
"produtoCor": "Exemplo",
"produtoDescricao": "Exemplo",
"observacao": "Exemplo",
"quantidade": 1,
"quantidadeAproximada": false,
"dataAtualizacao": "2026-10-15T09:00:00"
}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:
- nivelId não pode ser nulo.
- request não pode ser nulo.
- Este nível pertence a um setor fixo — use a alocação de materiais (moldes/produtos),
- Dados do produto são obrigatórios.
Regras de negócio e dependências: CurrentUserService.getCurrentUserIdOrFallback, ItemEstoqueService.salvarPorNivel. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PUT "${BASE_URL}/api/itens-estoque/nivel/1" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"quantidade":10,"quantidadeAproximada":false,"observacao":"Contagem conferida","produto":{"codigoSistemaWester":"DOC-001","nomeModelo":"Produto de exemplo","cor":"Preto","descricao":"Exemplo documental"}}'API-042 — Criar Por Nivel
POST /api/itens-estoque/nivel/{nivelId}
Finalidade: Criar Por Nivel. Embora use POST e retorne 201, chama o mesmo upsert do PUT: pode atualizar o item existente.
Fonte: src/main/java/com/wester/storage/controller/ItemEstoqueController.java:84 — ItemEstoqueController.criarPorNivel.
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: ItemEstoqueUpsertRequestDTO; 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": 10,
"quantidadeAproximada": false,
"observacao": "Contagem conferida",
"produto": {
"codigoSistemaWester": "DOC-001",
"nomeModelo": "Produto de exemplo",
"cor": "Preto",
"descricao": "Exemplo documental"
}
}Resposta de sucesso: ItemEstoqueDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"version": 0,
"nivelId": 1,
"nivelIdentificador": "Exemplo",
"nivelCompletoIdentificador": "Exemplo",
"produtoId": 1,
"produtoCodigoWester": "Exemplo",
"produtoNomeModelo": "Exemplo",
"produtoCor": "Exemplo",
"produtoDescricao": "Exemplo",
"observacao": "Exemplo",
"quantidade": 1,
"quantidadeAproximada": false,
"dataAtualizacao": "2026-10-15T09:00:00"
}Códigos HTTP: 201, 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:
- nivelId não pode ser nulo.
- request não pode ser nulo.
- Este nível pertence a um setor fixo — use a alocação de materiais (moldes/produtos),
- Dados do produto são obrigatórios.
Regras de negócio e dependências: CurrentUserService.getCurrentUserIdOrFallback, ItemEstoqueService.salvarPorNivel. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/itens-estoque/nivel/1" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"quantidade":10,"quantidadeAproximada":false,"observacao":"Contagem conferida","produto":{"codigoSistemaWester":"DOC-001","nomeModelo":"Produto de exemplo","cor":"Preto","descricao":"Exemplo documental"}}'API-043 — Movimenta item entre níveis
POST /api/itens-estoque/movimentacao
Finalidade: Movimenta item entre níveis.
Fonte: src/main/java/com/wester/storage/controller/ItemEstoqueController.java:101 — ItemEstoqueController.movimentar.
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:
Sem query parameters, path variables ou headers de negócio declarados.
Corpo da requisição: ItemEstoqueMovimentacaoRequestDTO; 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
{
"nivelOrigemId": 1,
"nivelDestinoId": 2,
"quantidade": 2
}Resposta de sucesso: ItemEstoqueDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"version": 0,
"nivelId": 1,
"nivelIdentificador": "Exemplo",
"nivelCompletoIdentificador": "Exemplo",
"produtoId": 1,
"produtoCodigoWester": "Exemplo",
"produtoNomeModelo": "Exemplo",
"produtoCor": "Exemplo",
"produtoDescricao": "Exemplo",
"observacao": "Exemplo",
"quantidade": 1,
"quantidadeAproximada": false,
"dataAtualizacao": "2026-10-15T09:00:00"
}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:
- nivelOrigemId e nivelDestinoId são obrigatórios.
- Origem e destino devem ser níveis diferentes.
- Quantidade de movimentação deve ser maior que zero.
- Quantidade solicitada maior que o estoque disponível no nível de origem.
- Nível destino já contém outro produto.
Regras de negócio e dependências: CurrentUserService.getCurrentUserIdOrFallback, ItemEstoqueService.movimentarEntreNiveis. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/itens-estoque/movimentacao" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"nivelOrigemId":1,"nivelDestinoId":2,"quantidade":2}'API-044 — Remove item de estoque do nível
DELETE /api/itens-estoque/nivel/{nivelId}
Finalidade: Remove item de estoque do nível.
Fonte: src/main/java/com/wester/storage/controller/ItemEstoqueController.java:125 — ItemEstoqueController.deletePorNivel.
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 | — |
itemVersion | query | Long | Não | — |
nivelVersion | query | Long | Não | — |
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.
Validações e erros identificados na cadeia local do serviço:
- nivelId não pode ser nulo.
Regras de negócio e dependências: CurrentUserService.getCurrentUserIdOrFallback, ItemEstoqueService.removerPorNivel. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/itens-estoque/nivel/1" -H "Authorization: Bearer ${TOKEN}"