Ir para o conteúdo

Produtos ​

Índice de endpoints · Modelos

API-075 — Listar Todos Produtos ​

GET /api/products

GET /api/produtos

Finalidade: Listar Todos Produtos.

Fonte: src/main/java/com/wester/storage/controller/ProdutoController.java:41 — ProdutoController.listarTodosProdutos.

Autenticação, autorização e perfis: hasAuthority('SCREEN_PRODUCTS') Consulte a correspondência entre autoridades e perfis em Autenticação.

Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.

Parâmetros:

NomeLocalTipoObrigatórioPadrão
pagequeryIntegerNão—
sizequeryIntegerNão—
searchqueryStringNão—
statusqueryStringNão—
categoriaqueryStringNão—
nomequeryStringNão—
namequeryStringNão—
codigoqueryStringNão—
codigoSistemaWesterqueryStringNão—
corqueryStringNão—
descricaoqueryStringNão—
sortqueryStringNão—
directionqueryStringNão—

Corpo: não declarado; não enviar corpo.

Resposta de sucesso: ProdutoListaVariavel. 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.

Validações e erros identificados na cadeia local do serviço:

  • Categoria inválida: [mensagem pode receber complemento dinâmico]

Regras de negócio e dependências: ProdutoService.shouldUsePaginatedListing, ProdutoService.listarTodosProdutos, ProdutoService.listarProdutosPaginados. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.

cURL (Bash):

bash
curl -X GET "${BASE_URL}/api/products" -H "Authorization: Bearer ${TOKEN}"

API-076 — Buscar Produto Por Id ​

GET /api/products/{id}

GET /api/produtos/{id}

Finalidade: Buscar Produto Por Id.

Fonte: src/main/java/com/wester/storage/controller/ProdutoController.java:79 — ProdutoController.buscarProdutoPorId.

Autenticação, autorização e perfis: hasAuthority('SCREEN_PRODUCTS') Consulte a correspondência entre autoridades e perfis em Autenticação.

Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.

Parâmetros:

NomeLocalTipoObrigatórioPadrão
idpathLongSim—

Corpo: não declarado; não enviar corpo.

Resposta de sucesso: Produto. Campos em Modelos.

Exemplo estrutural sintético, sem afirmar valores de produção:

json
{
  "id": 1,
  "codigoSistemaWester": "Exemplo",
  "nomeModelo": "Exemplo",
  "cor": "Exemplo",
  "descricao": "Exemplo",
  "ativo": false,
  "estoqueMinimo": 1,
  "estoqueMaximo": 1,
  "categoria": {
    "id": 1,
    "codigo": "Exemplo",
    "descricao": "Exemplo"
  }
}

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: ProdutoService.buscarProdutoPorId. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.

cURL (Bash):

bash
curl -X GET "${BASE_URL}/api/products/1" -H "Authorization: Bearer ${TOKEN}"

API-077 — Buscar Por Codigo Wester ​

GET /api/products/codigo/{codigoWester}

GET /api/produtos/codigo/{codigoWester}

Finalidade: Buscar Por Codigo Wester.

Fonte: src/main/java/com/wester/storage/controller/ProdutoController.java:88 — ProdutoController.buscarPorCodigoWester.

Autenticação, autorização e perfis: hasAuthority('SCREEN_PRODUCTS') Consulte a correspondência entre autoridades e perfis em Autenticação.

Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.

Parâmetros:

NomeLocalTipoObrigatórioPadrão
codigoWesterpathStringSim—

Corpo: não declarado; não enviar corpo.

Resposta de sucesso: Produto. Campos em Modelos.

Exemplo estrutural sintético, sem afirmar valores de produção:

json
{
  "id": 1,
  "codigoSistemaWester": "Exemplo",
  "nomeModelo": "Exemplo",
  "cor": "Exemplo",
  "descricao": "Exemplo",
  "ativo": false,
  "estoqueMinimo": 1,
  "estoqueMaximo": 1,
  "categoria": {
    "id": 1,
    "codigo": "Exemplo",
    "descricao": "Exemplo"
  }
}

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: ProdutoService.buscarPorCodigoWester. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.

cURL (Bash):

bash
curl -X GET "${BASE_URL}/api/products/codigo/1" -H "Authorization: Bearer ${TOKEN}"

API-078 — Criar Produto ​

POST /api/products

POST /api/produtos

Finalidade: Criar Produto.

Fonte: src/main/java/com/wester/storage/controller/ProdutoController.java:98 — ProdutoController.criarProduto.

Autenticação, autorização e perfis: hasAuthority('SCREEN_PRODUCTS') 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: ProdutoUpsertRequestDTO; 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
{
  "codigoSistemaWester": "DOC-001",
  "nomeModelo": "Produto de exemplo",
  "cor": "Preto",
  "descricao": "Exemplo documental",
  "ativo": true,
  "estoqueMinimo": 10,
  "estoqueMaximo": 100
}

Resposta de sucesso: Produto. Campos em Modelos.

Exemplo estrutural sintético, sem afirmar valores de produção:

json
{
  "id": 1,
  "codigoSistemaWester": "Exemplo",
  "nomeModelo": "Exemplo",
  "cor": "Exemplo",
  "descricao": "Exemplo",
  "ativo": false,
  "estoqueMinimo": 1,
  "estoqueMaximo": 1,
  "categoria": {
    "id": 1,
    "codigo": "Exemplo",
    "descricao": "Exemplo"
  }
}

Códigos HTTP: 201, 400, 401, 403, 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:

  • Código Wester já existe: [mensagem pode receber complemento dinâmico]
  • Informe ao menos o código ou o nome do produto.
  • Estoque máximo não pode ser menor que o estoque mínimo.

Regras de negócio e dependências: ProdutoService.salvarProduto. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.

cURL (Bash):

bash
curl -X POST "${BASE_URL}/api/products" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"codigoSistemaWester":"DOC-001","nomeModelo":"Produto de exemplo","cor":"Preto","descricao":"Exemplo documental","ativo":true,"estoqueMinimo":10,"estoqueMaximo":100}'

API-079 — Atualizar Produto ​

PUT /api/products/{id}

PUT /api/produtos/{id}

Finalidade: Atualizar Produto.

Fonte: src/main/java/com/wester/storage/controller/ProdutoController.java:113 — ProdutoController.atualizarProduto.

Autenticação, autorização e perfis: hasAuthority('SCREEN_PRODUCTS') 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:

NomeLocalTipoObrigatórioPadrão
idpathLongSim—

Corpo da requisição: ProdutoUpsertRequestDTO; 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
{
  "codigoSistemaWester": "DOC-001",
  "nomeModelo": "Produto de exemplo",
  "cor": "Preto",
  "descricao": "Exemplo documental",
  "ativo": true,
  "estoqueMinimo": 10,
  "estoqueMaximo": 100
}

Resposta de sucesso: Produto. Campos em Modelos.

Exemplo estrutural sintético, sem afirmar valores de produção:

json
{
  "id": 1,
  "codigoSistemaWester": "Exemplo",
  "nomeModelo": "Exemplo",
  "cor": "Exemplo",
  "descricao": "Exemplo",
  "ativo": false,
  "estoqueMinimo": 1,
  "estoqueMaximo": 1,
  "categoria": {
    "id": 1,
    "codigo": "Exemplo",
    "descricao": "Exemplo"
  }
}

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:

  • Código Wester já existe: [mensagem pode receber complemento dinâmico]
  • Informe ao menos o código ou o nome do produto.
  • Estoque máximo não pode ser menor que o estoque mínimo.

Regras de negócio e dependências: ProdutoService.atualizarProduto. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.

cURL (Bash):

bash
curl -X PUT "${BASE_URL}/api/products/1" -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' --data '{"codigoSistemaWester":"DOC-001","nomeModelo":"Produto de exemplo","cor":"Preto","descricao":"Exemplo documental","ativo":true,"estoqueMinimo":10,"estoqueMaximo":100}'

API-080 — Deletar Produto ​

DELETE /api/products/{id}

DELETE /api/produtos/{id}

Finalidade: Deletar Produto.

Fonte: src/main/java/com/wester/storage/controller/ProdutoController.java:133 — ProdutoController.deletarProduto.

Autenticação, autorização e perfis: hasAuthority('SCREEN_PRODUCTS') 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:

NomeLocalTipoObrigatórioPadrão
idpathLongSim—

Corpo: não declarado; não enviar corpo.

Resposta de sucesso: sem corpo quando 204.

Códigos HTTP: 204, 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.

Regras de negócio e dependências: ProdutoService.deletarProduto. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.

cURL (Bash):

bash
curl -X DELETE "${BASE_URL}/api/products/1" -H "Authorization: Bearer ${TOKEN}"

API-081 — Ativar Produto ​

PATCH /api/products/{id}/activate; POST /api/products/{id}/activate

PATCH /api/products/{id}/ativar; POST /api/products/{id}/ativar

PATCH /api/produtos/{id}/activate; POST /api/produtos/{id}/activate

PATCH /api/produtos/{id}/ativar; POST /api/produtos/{id}/ativar

Finalidade: Ativar Produto.

Fonte: src/main/java/com/wester/storage/controller/ProdutoController.java:151 — ProdutoController.ativarProduto.

Autenticação, autorização e perfis: hasAuthority('SCREEN_PRODUCTS') 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:

NomeLocalTipoObrigatórioPadrão
idpathLongSim—

Corpo: não declarado; não enviar corpo.

Resposta de sucesso: Produto. Campos em Modelos.

Exemplo estrutural sintético, sem afirmar valores de produção:

json
{
  "id": 1,
  "codigoSistemaWester": "Exemplo",
  "nomeModelo": "Exemplo",
  "cor": "Exemplo",
  "descricao": "Exemplo",
  "ativo": false,
  "estoqueMinimo": 1,
  "estoqueMaximo": 1,
  "categoria": {
    "id": 1,
    "codigo": "Exemplo",
    "descricao": "Exemplo"
  }
}

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: ProdutoService.ativarProduto. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.

cURL (Bash):

bash
curl -X PATCH "${BASE_URL}/api/products/1/activate" -H "Authorization: Bearer ${TOKEN}"

API-082 — Inativar Produto ​

PATCH /api/products/{id}/inactivate; POST /api/products/{id}/inactivate

PATCH /api/products/{id}/inativar; POST /api/products/{id}/inativar

PATCH /api/produtos/{id}/inactivate; POST /api/produtos/{id}/inactivate

PATCH /api/produtos/{id}/inativar; POST /api/produtos/{id}/inativar

Finalidade: Inativar Produto.

Fonte: src/main/java/com/wester/storage/controller/ProdutoController.java:162 — ProdutoController.inativarProduto.

Autenticação, autorização e perfis: hasAuthority('SCREEN_PRODUCTS') 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:

NomeLocalTipoObrigatórioPadrão
idpathLongSim—

Corpo: não declarado; não enviar corpo.

Resposta de sucesso: Produto. Campos em Modelos.

Exemplo estrutural sintético, sem afirmar valores de produção:

json
{
  "id": 1,
  "codigoSistemaWester": "Exemplo",
  "nomeModelo": "Exemplo",
  "cor": "Exemplo",
  "descricao": "Exemplo",
  "ativo": false,
  "estoqueMinimo": 1,
  "estoqueMaximo": 1,
  "categoria": {
    "id": 1,
    "codigo": "Exemplo",
    "descricao": "Exemplo"
  }
}

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.

Validações e erros identificados na cadeia local do serviço:

  • Não é possível inativar o produto porque ele possui itens em estoque.
  • Não é possível inativar o produto porque ele está alocado em uma ou mais posições.

Regras de negócio e dependências: ProdutoService.inativarProduto. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.

cURL (Bash):

bash
curl -X PATCH "${BASE_URL}/api/products/1/inactivate" -H "Authorization: Bearer ${TOKEN}"

API-083 — Listar produtos ativos com busca opcional por código ou nome ​

GET /api/products/ativos

GET /api/produtos/ativos

Finalidade: Listar produtos ativos com busca opcional por código ou nome.

Fonte: src/main/java/com/wester/storage/controller/ProdutoController.java:168 — ProdutoController.listarAtivos.

Autenticação, autorização e perfis: hasAuthority('SCREEN_PRODUCTS') Consulte a correspondência entre autoridades e perfis em Autenticação.

Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.

Parâmetros:

NomeLocalTipoObrigatórioPadrão
searchqueryStringNão—

Corpo: não declarado; não enviar corpo.

Resposta de sucesso: List<Produto>. 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: ProdutoService.buscarAtivos. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.

cURL (Bash):

bash
curl -X GET "${BASE_URL}/api/products/ativos" -H "Authorization: Bearer ${TOKEN}"

API-084 — Buscar Produtos ​

GET /api/products/buscar

GET /api/produtos/buscar

Finalidade: Buscar Produtos.

Fonte: src/main/java/com/wester/storage/controller/ProdutoController.java:177 — ProdutoController.buscarProdutos.

Autenticação, autorização e perfis: hasAuthority('SCREEN_PRODUCTS') Consulte a correspondência entre autoridades e perfis em Autenticação.

Headers: Authorization: Bearer <TOKEN>. Accept: application/json recomendado.

Parâmetros:

NomeLocalTipoObrigatórioPadrão
nomeModeloqueryStringNão—
corqueryStringNão—

Corpo: não declarado; não enviar corpo.

Resposta de sucesso: List<Produto>. 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: ProdutoService.buscarPorNomeModeloContendo, ProdutoService.buscarPorCor, ProdutoService.listarTodosProdutos. Consulte documento interno de regras de negócio para efeitos persistentes e validações compartilhadas.

cURL (Bash):

bash
curl -X GET "${BASE_URL}/api/products/buscar" -H "Authorization: Bearer ${TOKEN}"

Manual do usuário — Sistema Wester. Conteúdo descreve as telas conforme a versão indicada na página inicial.