Antes de utilizar qualquer funcionalidade da API, execute o endpoint responsável por criar todos os registros necessários para o funcionamento do sistema.
POST /AccessConfig/start-appCria 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.
POST /AccessRegister/create-userEste endpoint cria um novo usuário juntamente com seu login.
{
"fullName": "dados iniciais adm",
"nickname": "inicio-adm",
"email": "inicio@teste.com",
"password": "dados123",
"roleId": 1
}{
"userId": 4,
"fullName": "dados iniciais adm",
"nickname": "inicio-adm",
"email": "inicio@teste.com",
"password": "dados123",
"roleId": "ADMIN"
}{
"fullName": "dados iniciais seller",
"nickname": "inicio-sel",
"email": "inicio-sell@teste.com",
"password": "dados123",
"roleId": 2
}{
"userId": 5,
"fullName": "dados iniciais seller",
"nickname": "inicio-sel",
"email": "inicio-sell@teste.com",
"password": "dados123",
"roleId": "SELLER"
}POST /AccessRegister/loginEste 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.
{
"nickname": "inicio-adm",
"password": "dados123"
}Token gerado: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiI0IiwidW5pcXVlX25hbWUiOiJpbmljaW8tYWRtIiwicm9sZSI6IkFETUlOIiwibmJmIjoxNzgxODAwNDUzLCJleHAiOjE3ODE4MjkyNTMsImlhdCI6MTc4MTgwMDQ1M30.UQTtq6BfKzal6YEiXQquBSgAhV1AnqV5lb9Jpj89Jvg
Token gerado: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiI1IiwidW5pcXVlX25hbWUiOiJpbmljaW8tc2VsIiwicm9sZSI6IlNFTExFUiIsIm5iZiI6MTc4MTgwMDUwNiwiZXhwIjoxNzgxODI5MzA2LCJpYXQiOjE3ODE4MDA1MDZ9.OlcYUH6dQURCbne5mDlMoyxj0ePtObwdpTkXn9RHeUU
Acabamos de enviar um token secreto para o seu e-mail. Com ele, você poderá acessar sua conta com segurança.
Após obter o token JWT, todas as requisições protegidas deverão conter o seguinte header:
Authorization: Bearer <TOKEN>Após a execução do endpoint:
POST /AccessConfig/start-appa 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.
POST /Product/create-product{
"productName": "Golden Leash",
"productDescription": "Coleira de ouro para tiges",
"price": 9.99,
"stockQuantity": 10
}{
"productId": 11,
"productName": "Golden Leash",
"productDescription": "Coleira de ouro para tiges",
"price": 9.99,
"stockQuantity": 10
}{
"productName": "Interactive Cat Laser Toy",
"productDescription": "Brinquedo laser automático para gatos, com temporizador e modos de movimento.",
"price": 24.99,
"stockQuantity": 10
}{
"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
}POST /Stock/add-stock{
"productId": 11,
"quantity": 4,
"invoiceNumber": "123456"
}{
"stockMovementId": 1,
"productId": 11,
"productName": "Golden Leash",
"quantity": 4,
"invoiceNumber": "123456",
"movementDate": "2026-06-18T17:28:30.6913888Z",
"movementType": "Entrada"
}{
"productId": 12,
"quantity": 40,
"invoiceNumber": "58545625"
}{
"stockMovementId": 4,
"productId": 12,
"productName": "Interactive Cat Laser Toy",
"quantity": 40,
"invoiceNumber": "58545625",
"movementDate": "2026-06-18T17:42:42.4122006Z",
"movementType": "Entrada"
}PUT /Product/update-product{
"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
}{
"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
}POST /Order/create-orderEste endpoint cria uma nova comanda utilizando os produtos cadastrados e disponíveis em estoque.
{
"customerDocument": "12345678901",
"sellerName": "jonas",
"items": [
{
"productId": 1,
"quantity": 7
}
]
}{
"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
}
]
}- Executar
POST /AccessConfig/start-app. - Criar usuários utilizando
POST /AccessRegister/create-user. - Realizar login utilizando
POST /AccessRegister/login. - Copiar o token JWT retornado.
- Informar o token no header
Authorization: Bearer <TOKEN>. - Cadastrar novos produtos.
- Adicionar estoque aos produtos.
- Atualizar produtos quando necessário.
- Criar pedidos utilizando
POST /Order/create-order.
- Docker Desktop instalado e rodando
git clone https://github.com/LealLara/PetStore-Inventory-API.git cd PetStore-Inventory-API
docker compose build
docker compose up -d
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
curl -X POST http://localhost:5000/AccessConfig/start-app
curl -X POST http://localhost:5000/Login/login
-H "Content-Type: application/json"
-d '{"nickname": "admin", "password": "senha"}'
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}'
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"}'
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}]}'
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