Tema
Corredores, blocos e níveis
API-024 — Listar fileiras de uma área de estoque
GET /api/fileiras/area/{areaId}
Finalidade: Listar fileiras de uma área de estoque.
Fonte: src/main/java/com/wester/storage/controller/FileiraController.java:38 — FileiraController.listarFileirasPorArea.
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<FileiraResponseDTO>. 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: FileiraService.listarFileirasPorArea. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/fileiras/area/1" -H "Authorization: Bearer ${TOKEN}"API-025 — Buscar Fileira Por Id
GET /api/fileiras/{id}
Finalidade: Buscar Fileira Por Id.
Fonte: src/main/java/com/wester/storage/controller/FileiraController.java:45 — FileiraController.buscarFileiraPorId.
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 |
|---|---|---|---|---|
id | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: Fileira. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"id": 1,
"descricao": "Exemplo",
"nome": "Exemplo",
"ativo": false,
"tipoEstrutura": "DINAMICO",
"labelEstruturaPrimaria": "Exemplo",
"labelEstruturaSecundaria": "Exemplo",
"labelNivel": "Exemplo",
"labelSlot": "Exemplo",
"labelFileira": "Exemplo",
"labelGrade": "Exemplo",
"labelPosicao": "Exemplo"
},
"ativo": false
}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: FileiraService.buscarFileiraPorId. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/fileiras/1" -H "Authorization: Bearer ${TOKEN}"API-026 — Criar nova fileira para uma área de estoque
POST /api/fileiras/area/{areaId}
Finalidade: Criar nova fileira para uma área de estoque.
Fonte: src/main/java/com/wester/storage/controller/FileiraController.java:68 — FileiraController.criarFileira.
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 |
|---|---|---|---|---|
areaId | path | Long | Sim | — |
Corpo da requisição: CriarFileiraRequestDTO; 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
{
"identificador": "Exemplo",
"ordem": 1
}Resposta de sucesso: FileiraResponseDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"identificador": "Exemplo",
"ordem": 1,
"areaEstoqueId": 1
}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:
- N\u00e3o foi poss\u00edvel criar o corredor porque a sequ\u00eancia da \u00e1rea ficou desatualizada. Atualize a estrutura e tente novamente.
- Identificador é obrigatório.
- Identificador de Fileira já existe nesta Área: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: FileiraService.criar. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/fileiras/area/1" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"identificador":"Exemplo","ordem":1}'API-027 — Atualizar Fileira
PUT /api/fileiras/{id}
Finalidade: Atualizar Fileira.
Fonte: src/main/java/com/wester/storage/controller/FileiraController.java:82 — FileiraController.atualizarFileira.
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 |
|---|---|---|---|---|
id | path | Long | Sim | — |
Corpo da requisição: Fileira; 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
{
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"nome": "Setor de exemplo",
"descricao": "Área de exemplo",
"ativo": true,
"tipoEstrutura": "DINAMICO"
},
"ativo": false
}Resposta de sucesso: Fileira. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"id": 1,
"descricao": "Exemplo",
"nome": "Exemplo",
"ativo": false,
"tipoEstrutura": "DINAMICO",
"labelEstruturaPrimaria": "Exemplo",
"labelEstruturaSecundaria": "Exemplo",
"labelNivel": "Exemplo",
"labelSlot": "Exemplo",
"labelFileira": "Exemplo",
"labelGrade": "Exemplo",
"labelPosicao": "Exemplo"
},
"ativo": false
}Códigos HTTP: 200, 400, 401, 403, 404, 500. 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\u00e3o \u00e9 permitido alterar a \u00c1rea de Estoque de uma Fileira existente.
- Identificador de Fileira j\u00e1 existe nesta \u00c1rea: [mensagem pode receber complemento dinâmico]
- Ordem de Fileira j\u00e1 existe nesta \u00c1rea: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: FileiraService.atualizarFileira. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PUT "${BASE_URL}/api/fileiras/1" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"identificador":"Exemplo","ordem":1,"areaEstoque":{"nome":"Setor de exemplo","descricao":"Área de exemplo","ativo":true,"tipoEstrutura":"DINAMICO"},"ativo":false}'API-028 — Atualizar identificador de uma estrutura primaria fixa
PATCH /api/fileiras/{id}/identificador
Finalidade: Atualizar identificador de uma estrutura primaria fixa.
Fonte: src/main/java/com/wester/storage/controller/FileiraController.java:105 — FileiraController.atualizarIdentificador.
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 |
|---|---|---|---|---|
id | path | Long | Sim | — |
Corpo da requisição: IdentifierUpdateRequestDTO; 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
{
"identificador": "Exemplo",
"version": 0
}Resposta de sucesso: Fileira. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"id": 1,
"descricao": "Exemplo",
"nome": "Exemplo",
"ativo": false,
"tipoEstrutura": "DINAMICO",
"labelEstruturaPrimaria": "Exemplo",
"labelEstruturaSecundaria": "Exemplo",
"labelNivel": "Exemplo",
"labelSlot": "Exemplo",
"labelFileira": "Exemplo",
"labelGrade": "Exemplo",
"labelPosicao": "Exemplo"
},
"ativo": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409, 500. 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 manual é permitido apenas para setores FIXO.
- Identificador é obrigatório.
- Identificador de Fileira já existe nesta Área: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: FileiraService.atualizarIdentificador. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PATCH "${BASE_URL}/api/fileiras/1/identificador" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"identificador":"Exemplo","version":0}'API-029 — Desativa uma Estante (inativação lógica, permanente — esvazia tudo dentro antes)
DELETE /api/fileiras/{id}
Finalidade: Desativa uma Estante (inativação lógica, permanente — esvazia tudo dentro antes).
Fonte: src/main/java/com/wester/storage/controller/FileiraController.java:127 — FileiraController.deletarFileira.
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 |
|---|---|---|---|---|
id | 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, 500. 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:
- Estante já está desativada.
Regras de negócio e dependências: FileiraService.desativarFileira. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/fileiras/1" -H "Authorization: Bearer ${TOKEN}"API-030 — Listar Grades Por Fileira
GET /api/grades/fileira/{fileiraId}
Finalidade: Listar Grades Por Fileira.
Fonte: src/main/java/com/wester/storage/controller/GradeController.java:40 — GradeController.listarGradesPorFileira.
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: List<Grade>. 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: GradeService.listarGradesPorFileira. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/grades/fileira/1" -H "Authorization: Bearer ${TOKEN}"API-031 — Buscar Grade Por Id
GET /api/grades/{id}
Finalidade: Buscar Grade Por Id.
Fonte: src/main/java/com/wester/storage/controller/GradeController.java:48 — GradeController.buscarGradePorId.
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 |
|---|---|---|---|---|
id | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: Grade. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"fileira": {
"id": 1,
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"id": 1,
"descricao": "Exemplo",
"nome": "Exemplo",
"ativo": false,
"tipoEstrutura": "DINAMICO",
"labelEstruturaPrimaria": "Exemplo",
"labelEstruturaSecundaria": "Exemplo",
"labelNivel": "Exemplo",
"labelSlot": "Exemplo",
"labelFileira": "Exemplo",
"labelGrade": "Exemplo",
"labelPosicao": "Exemplo"
},
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"ativo": false
}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: GradeService.buscarGradePorId. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/grades/1" -H "Authorization: Bearer ${TOKEN}"API-032 — Criar grade em uma fileira
POST /api/grades/fileira/{fileiraId}
Finalidade: Criar grade em uma fileira.
Fonte: src/main/java/com/wester/storage/controller/GradeController.java:63 — GradeController.criarGrade.
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 |
|---|---|---|---|---|
fileiraId | path | Long | Sim | — |
Corpo da requisição: GradeCreateRequestDTO; 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
{
"identificador": "Exemplo",
"ordem": 1
}Resposta de sucesso: GradeResponseDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"identificador": "Exemplo",
"ordem": 1,
"fileiraId": 1
}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:
- N\u00e3o foi poss\u00edvel criar o bloco porque a sequ\u00eancia da fileira ficou desatualizada. Atualize a estrutura e tente novamente.
- Identificador é obrigatório.
- Identificador de Grade já existe nesta Fileira: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: GradeService.criarGrade. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/grades/fileira/1" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"identificador":"Exemplo","ordem":1}'API-033 — Atualizar Grade
PUT /api/grades/{id}
Finalidade: Atualizar Grade.
Fonte: src/main/java/com/wester/storage/controller/GradeController.java:78 — GradeController.atualizarGrade.
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 |
|---|---|---|---|---|
id | path | Long | Sim | — |
Corpo da requisição: Grade; 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
{
"fileira": {
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"nome": "Setor de exemplo",
"descricao": "Área de exemplo",
"ativo": true,
"tipoEstrutura": "DINAMICO"
},
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"ativo": false
}Resposta de sucesso: Grade. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"fileira": {
"id": 1,
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"id": 1,
"descricao": "Exemplo",
"nome": "Exemplo",
"ativo": false,
"tipoEstrutura": "DINAMICO",
"labelEstruturaPrimaria": "Exemplo",
"labelEstruturaSecundaria": "Exemplo",
"labelNivel": "Exemplo",
"labelSlot": "Exemplo",
"labelFileira": "Exemplo",
"labelGrade": "Exemplo",
"labelPosicao": "Exemplo"
},
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"ativo": false
}Códigos HTTP: 200, 400, 401, 403, 404, 500. 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\u00e3o \u00e9 permitido alterar a Fileira de uma Grade existente.
- Identificador de Grade j\u00e1 existe nesta Fileira: [mensagem pode receber complemento dinâmico]
- Ordem de Grade j\u00e1 existe nesta Fileira: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: GradeService.atualizarGrade. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PUT "${BASE_URL}/api/grades/1" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"fileira":{"identificador":"Exemplo","ordem":1,"areaEstoque":{"nome":"Setor de exemplo","descricao":"Área de exemplo","ativo":true,"tipoEstrutura":"DINAMICO"},"ativo":false},"identificador":"Exemplo","ordem":1,"ativo":false}'API-034 — Atualizar identificador de uma estrutura secundaria fixa
PATCH /api/grades/{id}/identificador
Finalidade: Atualizar identificador de uma estrutura secundaria fixa.
Fonte: src/main/java/com/wester/storage/controller/GradeController.java:101 — GradeController.atualizarIdentificador.
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 |
|---|---|---|---|---|
id | path | Long | Sim | — |
Corpo da requisição: IdentifierUpdateRequestDTO; 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
{
"identificador": "Exemplo",
"version": 0
}Resposta de sucesso: Grade. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"fileira": {
"id": 1,
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"id": 1,
"descricao": "Exemplo",
"nome": "Exemplo",
"ativo": false,
"tipoEstrutura": "DINAMICO",
"labelEstruturaPrimaria": "Exemplo",
"labelEstruturaSecundaria": "Exemplo",
"labelNivel": "Exemplo",
"labelSlot": "Exemplo",
"labelFileira": "Exemplo",
"labelGrade": "Exemplo",
"labelPosicao": "Exemplo"
},
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"ativo": false
}Códigos HTTP: 200, 400, 401, 403, 404, 409, 500. 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 manual é permitido apenas para setores FIXO.
- Identificador é obrigatório.
- Identificador de Grade já existe nesta Fileira: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: GradeService.atualizarIdentificador. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PATCH "${BASE_URL}/api/grades/1/identificador" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"identificador":"Exemplo","version":0}'API-035 — Desativa um Bloco (inativação lógica, permanente — esvazia tudo dentro antes)
DELETE /api/grades/{id}
Finalidade: Desativa um Bloco (inativação lógica, permanente — esvazia tudo dentro antes).
Fonte: src/main/java/com/wester/storage/controller/GradeController.java:123 — GradeController.deletarGrade.
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 |
|---|---|---|---|---|
id | 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, 500. 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:
- Bloco j\u00e1 est\u00e1 desativado.
Regras de negócio e dependências: GradeService.desativarGrade. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/grades/1" -H "Authorization: Bearer ${TOKEN}"API-055 — Listar Niveis Por Grade
GET /api/niveis/grade/{gradeId}
Finalidade: Listar Niveis Por Grade.
Fonte: src/main/java/com/wester/storage/controller/NivelController.java:44 — NivelController.listarNiveisPorGrade.
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 |
|---|---|---|---|---|
gradeId | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: List<Nivel>. 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: NivelService.listarNiveisPorGrade. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/niveis/grade/1" -H "Authorization: Bearer ${TOKEN}"API-056 — Buscar Nivel Por Id
GET /api/niveis/{id}
Finalidade: Buscar Nivel Por Id.
Fonte: src/main/java/com/wester/storage/controller/NivelController.java:52 — NivelController.buscarNivelPorId.
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 |
|---|---|---|---|---|
id | path | Long | Sim | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: Nivel. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"version": 0,
"grade": {
"fileira": {
"id": 1,
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"id": 1,
"descricao": "Exemplo",
"nome": "Exemplo",
"ativo": false,
"tipoEstrutura": "DINAMICO",
"labelEstruturaPrimaria": "Exemplo",
"labelEstruturaSecundaria": "Exemplo",
"labelNivel": "Exemplo",
"labelSlot": "Exemplo",
"labelFileira": "Exemplo",
"labelGrade": "Exemplo",
"labelPosicao": "Exemplo"
},
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"identificadorCompletoLegivel": "Exemplo",
"ativo": false
}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: NivelService.buscarNivelPorId. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X GET "${BASE_URL}/api/niveis/1" -H "Authorization: Bearer ${TOKEN}"API-057 — Criar nível em uma grade
POST /api/niveis/grade/{gradeId}
Finalidade: Criar nível em uma grade.
Fonte: src/main/java/com/wester/storage/controller/NivelController.java:67 — NivelController.criarNivel.
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 |
|---|---|---|---|---|
gradeId | path | Long | Sim | — |
Corpo da requisição: NivelCreateRequestDTO; 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
{
"identificador": "Exemplo",
"ordem": 1,
"item": {
"quantidade": 10,
"quantidadeAproximada": false,
"observacao": "Contagem conferida",
"produto": {
"codigoSistemaWester": "DOC-001",
"nomeModelo": "Produto de exemplo",
"cor": "Preto",
"descricao": "Exemplo documental"
}
}
}Resposta de sucesso: NivelResponseDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"id": 1,
"version": 0,
"identificador": "Exemplo",
"ordem": 1,
"gradeId": 1,
"itemEstoqueId": 1
}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:
- Posição inválida para inserção. Informe um valor entre 1 e
- Informe uma quantidade maior que zero para o produto da gaiola.
- Identificador de nível já existe nesta grade: [mensagem pode receber complemento dinâmico]
- Ordem de nível já existe nesta grade: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: NivelService.criarNivel. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/niveis/grade/1" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"identificador":"Exemplo","ordem":1,"item":{"quantidade":10,"quantidadeAproximada":false,"observacao":"Contagem conferida","produto":{"codigoSistemaWester":"DOC-001","nomeModelo":"Produto de exemplo","cor":"Preto","descricao":"Exemplo documental"}}}'API-058 — Mover nivel entre grades e posicoes
POST /api/niveis/{nivelId}/move
Finalidade: Mover nivel entre grades e posicoes.
Fonte: src/main/java/com/wester/storage/controller/NivelController.java:87 — NivelController.moverNivel.
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: NivelMoveRequestDTO; 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
{
"sourceGradeId": 1,
"targetGradeId": 2,
"targetPosition": 1,
"nivelVersion": 0
}Resposta de sucesso: NivelMoveResultDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"nivelId": 1,
"sourceGradeId": 1,
"targetGradeId": 1,
"targetPosition": 1,
"impactedGrades": []
}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:
- A grade de origem informada não corresponde ao nível selecionado.
- Grade de origem ou destino não encontrada.
- Posição inválida para movimentação. Informe um valor entre 1 e
- Nível não encontrado na sequência atual: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: NivelService.moverNivel. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X POST "${BASE_URL}/api/niveis/1/move" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"sourceGradeId":1,"targetGradeId":2,"targetPosition":1,"nivelVersion":0}'API-059 — Atualizar Nivel
PUT /api/niveis/{id}
Finalidade: Atualizar Nivel.
Fonte: src/main/java/com/wester/storage/controller/NivelController.java:107 — NivelController.atualizarNivel.
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 |
|---|---|---|---|---|
id | path | Long | Sim | — |
Corpo da requisição: Nivel; 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
{
"version": 0,
"grade": {
"fileira": {
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"nome": "Setor de exemplo",
"descricao": "Área de exemplo",
"ativo": true,
"tipoEstrutura": "DINAMICO"
},
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"identificadorCompletoLegivel": "Exemplo",
"ativo": false
}Resposta de sucesso: Nivel. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"version": 0,
"grade": {
"fileira": {
"id": 1,
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"id": 1,
"descricao": "Exemplo",
"nome": "Exemplo",
"ativo": false,
"tipoEstrutura": "DINAMICO",
"labelEstruturaPrimaria": "Exemplo",
"labelEstruturaSecundaria": "Exemplo",
"labelNivel": "Exemplo",
"labelSlot": "Exemplo",
"labelFileira": "Exemplo",
"labelGrade": "Exemplo",
"labelPosicao": "Exemplo"
},
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"identificadorCompletoLegivel": "Exemplo",
"ativo": false
}Códigos HTTP: 200, 400, 401, 403, 404, 500. 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 é permitido alterar a grade de um nível existente.
- A ordem do nível deve ser maior ou igual a 1.
- Identificador de nível já existe nesta grade: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: NivelService.atualizarNivel. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PUT "${BASE_URL}/api/niveis/1" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"version":0,"grade":{"fileira":{"identificador":"Exemplo","ordem":1,"areaEstoque":{"nome":"Setor de exemplo","descricao":"Área de exemplo","ativo":true,"tipoEstrutura":"DINAMICO"},"ativo":false},"identificador":"Exemplo","ordem":1,"ativo":false},"identificador":"Exemplo","ordem":1,"identificadorCompletoLegivel":"Exemplo","ativo":false}'API-060 — Atualizar identificador de um nivel fixo
PATCH /api/niveis/{id}/identificador
Finalidade: Atualizar identificador de um nivel fixo.
Fonte: src/main/java/com/wester/storage/controller/NivelController.java:138 — NivelController.atualizarIdentificador.
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 |
|---|---|---|---|---|
id | path | Long | Sim | — |
Corpo da requisição: IdentifierUpdateRequestDTO; 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
{
"identificador": "Exemplo",
"version": 0
}Resposta de sucesso: Nivel. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"version": 0,
"grade": {
"fileira": {
"id": 1,
"identificador": "Exemplo",
"ordem": 1,
"areaEstoque": {
"id": 1,
"descricao": "Exemplo",
"nome": "Exemplo",
"ativo": false,
"tipoEstrutura": "DINAMICO",
"labelEstruturaPrimaria": "Exemplo",
"labelEstruturaSecundaria": "Exemplo",
"labelNivel": "Exemplo",
"labelSlot": "Exemplo",
"labelFileira": "Exemplo",
"labelGrade": "Exemplo",
"labelPosicao": "Exemplo"
},
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"ativo": false
},
"identificador": "Exemplo",
"ordem": 1,
"identificadorCompletoLegivel": "Exemplo",
"ativo": 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:
- Identificador manual é permitido apenas para setores FIXO.
- Identificador é obrigatório.
- Identificador de nível já existe nesta grade: [mensagem pode receber complemento dinâmico]
- Ordem de nível já existe nesta grade: [mensagem pode receber complemento dinâmico]
Regras de negócio e dependências: NivelService.atualizarIdentificador. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X PATCH "${BASE_URL}/api/niveis/1/identificador" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"identificador":"Exemplo","version":0}'API-061 — Remove um nível e resequencia níveis da grade
DELETE /api/niveis/{nivelId}/resequence
Finalidade: Remove um nível e resequencia níveis da grade. Remove e renumera os níveis restantes; devolve GradeResequenceResultDTO. Não confundir com DELETE simples.
Fonte: src/main/java/com/wester/storage/controller/NivelController.java:162 — NivelController.deleteAndResequence.
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 | — |
version | query | Long | Não | — |
Corpo: não declarado; não enviar corpo.
Resposta de sucesso: GradeResequenceResultDTO. Campos em Modelos.
Exemplo estrutural sintético, sem afirmar valores de produção:
json
{
"gradeId": 1,
"niveis": []
}Códigos HTTP: 200, 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:
- Nivel não pode ser removido pela regra estrutural atual.
- Erro de integridade ao resequenciar niveis. Verifique constraints de ordem e identificador.
Regras de negócio e dependências: NivelService.deleteAndResequence. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/niveis/1/resequence" -H "Authorization: Bearer ${TOKEN}"API-062 — Remove um nível (sem resequenciar)
DELETE /api/niveis/{nivelId}
Finalidade: Remove um nível (sem resequenciar).
Fonte: src/main/java/com/wester/storage/controller/NivelController.java:184 — NivelController.deleteNivelOnly.
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 | — |
version | 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, 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 foi possível remover o nível porque existem registros vinculados a ele.
Regras de negócio e dependências: NivelService.deleteNivelOnly. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/niveis/1" -H "Authorization: Bearer ${TOKEN}"API-063 — Desativa um Nível de setor fixo (inativação lógica, permanente — esvazia materiais antes)
DELETE /api/niveis/{nivelId}/desativar
Finalidade: Desativa um Nível de setor fixo (inativação lógica, permanente — esvazia materiais antes).
Fonte: src/main/java/com/wester/storage/controller/NivelController.java:206 — NivelController.desativarNivel.
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, 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ível já está desativado.
Regras de negócio e dependências: NivelService.desativarNivel. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.
cURL (Bash):
bash
curl -X DELETE "${BASE_URL}/api/niveis/1/desativar" -H "Authorization: Bearer ${TOKEN}"