Skip to content

Repository files navigation

Fluxo completo da API

1. Inicialização da aplicação

Antes de utilizar qualquer funcionalidade da API, execute o endpoint responsável por criar todos os registros necessários para o funcionamento do sistema.

Endpoint

POST /AccessConfig/start-app

Objetivo

Cria automaticamente os registros iniciais da aplicação:

  • Roles
  • Tipos de log
  • Usuários padrão
  • Logins
  • Produtos genéricos

Após sua execução a aplicação estará pronta para utilização.


2. Cadastro de usuários

Endpoint

POST /AccessRegister/create-user

Este endpoint cria um novo usuário juntamente com seu login.


Cadastro de Administrador

Request

{
  "fullName": "dados iniciais adm",
  "nickname": "inicio-adm",
  "email": "inicio@teste.com",
  "password": "dados123",
  "roleId": 1
}

Response

{
  "userId": 4,
  "fullName": "dados iniciais adm",
  "nickname": "inicio-adm",
  "email": "inicio@teste.com",
  "password": "dados123",
  "roleId": "ADMIN"
}

Cadastro de Vendedor

Request

{
  "fullName": "dados iniciais seller",
  "nickname": "inicio-sel",
  "email": "inicio-sell@teste.com",
  "password": "dados123",
  "roleId": 2
}

Response

{
  "userId": 5,
  "fullName": "dados iniciais seller",
  "nickname": "inicio-sel",
  "email": "inicio-sell@teste.com",
  "password": "dados123",
  "roleId": "SELLER"
}

3. Login

Endpoint

POST /AccessRegister/login

Este endpoint autentica o usuário e registra o login no sistema.

Quando o envio de e-mails estiver habilitado, um token JWT será enviado automaticamente para o e-mail cadastrado.

Atualmente o disparo de e-mails encontra-se temporariamente bloqueado, portanto o token JWT é retornado diretamente na resposta da API.


Request

{
  "nickname": "inicio-adm",
  "password": "dados123"
}

Response (Administrador)

Token gerado: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiI0IiwidW5pcXVlX25hbWUiOiJpbmljaW8tYWRtIiwicm9sZSI6IkFETUlOIiwibmJmIjoxNzgxODAwNDUzLCJleHAiOjE3ODE4MjkyNTMsImlhdCI6MTc4MTgwMDQ1M30.UQTtq6BfKzal6YEiXQquBSgAhV1AnqV5lb9Jpj89Jvg

Response (Vendedor)

Token gerado: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiI1IiwidW5pcXVlX25hbWUiOiJpbmljaW8tc2VsIiwicm9sZSI6IlNFTExFUiIsIm5iZiI6MTc4MTgwMDUwNiwiZXhwIjoxNzgxODI5MzA2LCJpYXQiOjE3ODE4MDA1MDZ9.OlcYUH6dQURCbne5mDlMoyxj0ePtObwdpTkXn9RHeUU

Resposta esperada quando o envio de e-mails estiver habilitado

Acabamos de enviar um token secreto para o seu e-mail. Com ele, você poderá acessar sua conta com segurança.

Autenticação

Após obter o token JWT, todas as requisições protegidas deverão conter o seguinte header:

Authorization: Bearer <TOKEN>

4. Produtos iniciais

Após a execução do endpoint:

POST /AccessConfig/start-app

a aplicação cadastra automaticamente 10 produtos genéricos, permitindo que pedidos possam ser criados imediatamente.

Os próximos exemplos demonstram o cadastro de novos produtos além daqueles gerados automaticamente.


5. Cadastro de produtos

Endpoint

POST /Product/create-product

Primeiro produto

Request

{
  "productName": "Golden Leash",
  "productDescription": "Coleira de ouro para tiges",
  "price": 9.99,
  "stockQuantity": 10
}

Response

{
  "productId": 11,
  "productName": "Golden Leash",
  "productDescription": "Coleira de ouro para tiges",
  "price": 9.99,
  "stockQuantity": 10
}

Segundo produto

Request

{
  "productName": "Interactive Cat Laser Toy",
  "productDescription": "Brinquedo laser automático para gatos, com temporizador e modos de movimento.",
  "price": 24.99,
  "stockQuantity": 10
}

Response

{
  "productId": 12,
  "productName": "Interactive Cat Laser Toy",
  "productDescription": "Brinquedo laser automático para gatos, com temporizador e modos de movimento.",
  "price": 24.99,
  "stockQuantity": 10
}

6. Cadastro de estoque

Endpoint

POST /Stock/add-stock

Adicionar estoque ao primeiro produto

Request

{
  "productId": 11,
  "quantity": 4,
  "invoiceNumber": "123456"
}

Response

{
  "stockMovementId": 1,
  "productId": 11,
  "productName": "Golden Leash",
  "quantity": 4,
  "invoiceNumber": "123456",
  "movementDate": "2026-06-18T17:28:30.6913888Z",
  "movementType": "Entrada"
}

Adicionar estoque ao segundo produto

Request

{
  "productId": 12,
  "quantity": 40,
  "invoiceNumber": "58545625"
}

Response

{
  "stockMovementId": 4,
  "productId": 12,
  "productName": "Interactive Cat Laser Toy",
  "quantity": 40,
  "invoiceNumber": "58545625",
  "movementDate": "2026-06-18T17:42:42.4122006Z",
  "movementType": "Entrada"
}

7. Atualização de produto

Endpoint

PUT /Product/update-product

Request

{
  "productId": 12,
  "productName": "Interactive Cat Laser Toy",
  "productDescription": "Brinquedo laser automático para gatos, com temporizador e modos de movimento.",
  "price": 24.99,
  "stockQuantity": 45
}

Response

{
  "productId": 12,
  "productName": "Interactive Cat Laser Toy",
  "productDescription": "Brinquedo laser automático para gatos, com temporizador e modos de movimento.",
  "price": 24.99,
  "stockQuantity": 45
}

8. Criação de pedidos

Endpoint

POST /Order/create-order

Este endpoint cria uma nova comanda utilizando os produtos cadastrados e disponíveis em estoque.


Request

{
  "customerDocument": "12345678901",
  "sellerName": "jonas",
  "items": [
    {
      "productId": 1,
      "quantity": 7
    }
  ]
}

Response

{
  "orderId": 4,
  "customerDocument": "12345678901",
  "sellerName": "jonas",
  "totalAmount": 209.93,
  "createdAt": "2026-06-18T19:45:53.8539625Z",
  "items": [
    {
      "productId": 1,
      "productName": "Dog Food",
      "quantity": 7,
      "unitPrice": 29.99,
      "subtotal": 209.93
    }
  ]
}

Fluxo completo de utilização

  1. Executar POST /AccessConfig/start-app.
  2. Criar usuários utilizando POST /AccessRegister/create-user.
  3. Realizar login utilizando POST /AccessRegister/login.
  4. Copiar o token JWT retornado.
  5. Informar o token no header Authorization: Bearer <TOKEN>.
  6. Cadastrar novos produtos.
  7. Adicionar estoque aos produtos.
  8. Atualizar produtos quando necessário.
  9. Criar pedidos utilizando POST /Order/create-order.

Execução com Docker

Pré-requisitos

Passos

1. Clone o repositório

git clone https://github.com/LealLara/PetStore-Inventory-API.git cd PetStore-Inventory-API

2. Construir a imagem

docker compose build

3. Iniciar o container

docker compose up -d

4. Acessar o Swagger

Comandos úteis

docker compose logs -f # Ver logs docker compose down # Parar o container docker compose down -v # Parar e limpar dados docker compose restart # Reiniciar docker ps # Ver containers rodando

Fluxo de testes

1. Inicializar a aplicação

curl -X POST http://localhost:5000/AccessConfig/start-app

2. Login (admin/senha)

curl -X POST http://localhost:5000/Login/login
-H "Content-Type: application/json"
-d '{"nickname": "admin", "password": "senha"}'

3. Criar produto (substitua TOKEN)

curl -X POST http://localhost:5000/Product/create-product
-H "Content-Type: application/json"
-H "Authorization: Bearer SEU_TOKEN_AQUI"
-d '{"productName": "Ração Premium", "productDescription": "Ração para cães", "price": 99.90, "stockQuantity": 10}'

4. Adicionar estoque

curl -X POST http://localhost:5000/Stock/add-stock
-H "Content-Type: application/json"
-H "Authorization: Bearer SEU_TOKEN_AQUI"
-d '{"productId": 1, "quantity": 5, "invoiceNumber": "NF-001"}'

5. Criar pedido

curl -X POST http://localhost:5000/Order/create-order
-H "Content-Type: application/json"
-H "Authorization: Bearer SEU_TOKEN_AQUI"
-d '{"customerDocument": "12345678900", "sellerName": "Ana", "items": [{"productId": 1, "quantity": 2}]}'

Observações

O banco SQLite é persistido na pasta ./data do projeto

Para limpar os dados: docker compose down -v

Se a porta 5000 estiver em uso, altere no docker-compose.yml

About

API REST para gerenciamento de produtos, estoque e pedidos de uma loja de acessórios para pets.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages