TechShop é uma API para gerenciamento de uma loja virtual, com funcionalidades para administradores, clientes e carrinho de compras. O Sistema tem como objetivo simular um e-commerce, onde é possível realizar a compra de produtos, adicionar produtos ao carrinho, realizar o pagamento e gerenciar produtos e categorias.
Para administradores:
Gerenciamento de usuários:
- Cadastro de administradores e clientes.
- Autenticação com token.
Gerenciamento de categorias:
- Cadastro, atualização, exclusão e recuperação de categorias de produtos.
Gerenciamento de produtos:
- Cadastro, atualização, exclusão e recuperação de produtos.
- Associação de produtos a categorias.
Para clientes:
Pesquisa de produtos:
- Listagem de produtos com paginação.
- Busca por produtos por nome ou categoria.
- Recuperação de detalhes de um produto.
Carrinho de compras:
- Adição, remoção e listagem de produtos no carrinho.
- Cálculo do valor total do carrinho.
Pagamento:
- Realização de pagamentos com diferentes métodos.
- Consulta de pagamentos realizados.
Recursos da API:
Autenticação:
- Utilize o token de autenticação para acessar recursos protegidos.
Pagamentos:
- Integração com diferentes métodos de pagamento.
- Erros: Respostas padronizadas para erros com códigos e mensagens descritivas.
- Java 21
- Spring Boot
- Spring Framework
- Spring Data JPA
- Spring Security
- Spring Cloud
- Gateway
- Eureka
- OpenFeign
- Swagger
- JWT
- Hibernate
- MySQL
- Docker
Informações | |
---|---|
recurso | http://localhost:8081/api/auth/login |
método | POST |
Exemplo de requisição:
curl -v -X POST --location "http://localhost:8081/api/auth/login" \
-H "Content-Type: application/json" \
-d '{
"email" : "admin@admin.com",
"password" : "admin"
}'
Informações | |
---|---|
recurso | http://localhost:8081/api/auth/register-admin |
método | POST |
Obs: Para cadastrar um usuário administrador, é necessário estar autenticado como administrador. |
Exemplo de requisição:
curl -v -X POST --location "http://localhost:8081/api/auth/register-admin" \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer {token}' \
-d '{
"name" : "usuarioAdmin",
"email" : "usuarioAdmin@email.com",
"password" : "usuarioAdmin"
}'
Informações | |
---|---|
recurso | http://localhost:8081/api/auth/register |
método | POST |
Exemplo de requisição:
curl -v -X POST --location "http://localhost:8081/api/auth/register" \
-H "Content-Type: application/json" \
-d '{
"name" : "usuarioCliente",
"email" : "usuarioCliente@email.com",
"password" : "usuarioCliente"
}'
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/categories |
método | POST |
Exemplo de requisição:
curl -v -X POST --location "http://localhost:8081/api/admin/categories" \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer {token}' \
-d '{
"name" : "Eletrônicos",
"description" : "Categoria de produtos eletrônicos"
}'
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/categories |
método | GET |
Exemplo de requisição:
curl -v -X GET --location "http://localhost:8081/api/admin/categories" \
-H 'Authorization: Bearer {token}'
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/categories/{id} |
método | GET |
Exemplo de requisição:
curl -v -X GET --location "http://localhost:8081/api/admin/categories/1" \
-H 'Authorization: Bearer {token}'
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/categories/{id} |
método | PUT |
Exemplo de requisição:
curl -v -X PUT --location "http://localhost:8081/api/admin/categories/1" \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer {token}' \
-d '{
"name" : "Eletro",
"description" : "Categoria de produtos eletro legais"
}'
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/categories/{id} |
método | DELETE |
Exemplo de requisição:
curl -v -X DELETE --location "http://localhost:8081/api/admin/categories/1" \
-H 'Authorization: Bearer {token}'
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/products |
método | POST |
Exemplo de requisição:
curl -v -X POST --location "http://localhost:8081/api/admin/products" \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer {token}' \
-d '{
"name" : "Celular",
"description" : "Celular top",
"price" : 15000.0,
"inventory" : 3,
"categoriesIds" : [ 1 ]
}'
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/products |
método | GET |
Exemplo de requisição:
curl -v -X GET --location "http://localhost:8081/api/admin/products"
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/products/{id} |
método | GET |
Exemplo de requisição:
curl -v -X GET --location "http://localhost:8081/api/admin/products/1"
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/products/{id} |
método | PUT |
Exemplo de requisição:
curl -v -X PUT --location "http://localhost:8081/api/admin/products/1" \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer {token}' \
-d '{
"name" : "Celular Top",
"description" : "Celular top top",
"price" : 16000.0,
"categoriesIds" : [ 2 ]
}'
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/products/{id} |
método | DELETE |
Exemplo de requisição:
curl -v -X DELETE --location "http://localhost:8081/api/admin/products/1" \
-H 'Authorization: Bearer {token}'
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/inventory/1/increment/5 |
método | POST |
Exemplo de requisição:
curl -v -X PUT --location "http://localhost:8081/api/admin/inventory/1/increment/5" \
-H 'Authorization: Bearer {token}'
Informações | |
---|---|
recurso | http://localhost:8081/api/admin/inventory/1/decrement/1 |
método | POST |
Exemplo de requisição:
curl -v -X PUT --location "http://localhost:8081/api/admin/inventory/1/decrement/3" \
-H 'Authorization: Bearer {token}'
Informações | |
---|---|
recurso | http://localhost:8081/api/shop/products |
método | GET |
Exemplo de requisição:
curl -v -X GET --location "http://localhost:8081/api/shop/products"
Informações | |
---|---|
recurso | http://localhost:8081/api/shop/products/{id} |
método | GET |
Exemplo de requisição:
curl -v -X GET --location "http://localhost:8081/api/shop/products/1"
Informações | |
---|---|
recurso | http://localhost:8081/api/shop/products/category/{categoryId} |
método | GET |
Exemplo de requisição:
curl -v -X GET --location "http://localhost:8081/api/shop/products/category/1"
Informações | |
---|---|
recurso | http://localhost:8081/api/shop/cart/add |
método | POST |
Exemplo de requisição:
curl -v -X POST --location "http://localhost:8081/api/shop/cart/add" \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer {token}' \
-d '[
{
"productId" : 1,
"quantity" : 2
}
]'
Informações | |
---|---|
recurso | http://localhost:8081/api/shop/cart/remove |
método | POST |
Exemplo de requisição:
curl -v -X POST --location "http://localhost:8081/api/shop/cart/remove" \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer {token}' \
-d '[
{
"productId" : 1,
"quantity" : 1
}
]'
Informações | |
---|---|
recurso | http://localhost:8081/api/shop/cart/remove/all |
método | POST |
Exemplo de requisição:
curl -v -X POST --location "http://localhost/payment" \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer {token}' \
-d '{
"cartId" : 0,
"amount" : { },
"paymentMethod" : ""
}'
Informações | |
---|---|
recurso | http://localhost:8081/api/shop/cart |
método | GET |
Exemplo de requisição:
curl -v -X GET --location "http://localhost:8081/api/shop/cart" \
-H 'Authorization: Bearer {token}'
Informações | |
---|---|
recurso | http://localhost:8081/api/shop/cart/total |
método | GET |
Exemplo de requisição:
curl -v -X GET --location "http://localhost:8081/api/shop/cart/total" \
-H 'Authorization: Bearer {token}'
Informações | |
---|---|
recurso | http://localhost:8081/api/payment/payment |
método | POST |
Exemplo de requisição:
curl -v -X POST --location "http://localhost:8081/api/payment/payment" \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer {token}' \
-d '{
"cartId" : 1,
"amount" : 3000.0,
"paymentMethod" : "PIX"
}'
Informações | |
---|---|
recurso | http://localhost:8081/api/payment/payment/{id} |
método | GET |
Exemplo de requisição:
curl -v -X GET --location "http://localhost:8081/api/payment/payment/1" \
-H 'Authorization: Bearer {token}'