Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar
  • Coopera RS
  • Wiki
  • Wiki
  • API Backend

API Backend · Changes

Page history
Create API Backend authored Jun 06, 2025 by Nicolas dos Santos Moraes's avatar Nicolas dos Santos Moraes
Hide whitespace changes
Inline Side-by-side
API-Backend.md 0 → 100644
View page @ da35b46a
# Exemplos de Payloads JSON para Endpoints da API
Esta seção fornece exemplos de estruturas JSON para as requisições (requests) e respostas (responses) dos principais endpoints da API do Coopera-RS, baseados nas interfaces TypeScript e mocks encontrados no frontend.
**Observação:** Os endpoints exatos (URLs e métodos HTTP) precisam ser confirmados com a documentação do backend (Swagger), mas os formatos de dados aqui apresentados servem como guia.
## Autenticação (`/api/auth`)
### 1. Login de Usuário
* **Endpoint (inferido):** `POST /api/auth/login`
* **Request Body:**
```json
{
"email": "[email protected]",
"password": "senha123"
}
```
* **Response Body (Sucesso - 200 OK):**
```json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"username": "Nome do Usuario",
"role": "CLIENT", // ou "STORE"
"emailVerified": true
}
```
### 2. Registro de Usuário (Cliente)
* **Endpoint (inferido):** `POST /api/auth/register`
* **Observação:** Este endpoint registra um novo usuário sempre com a role **'CLIENT'**.
* **Request Body:**
```json
{
"name": "Nome Completo do Cliente",
"email": "[email protected]",
"password": "senhaSegura123",
"phone": "51999998888",
"cep": "90000000",
"address": "Rua Exemplo", // Endereço residencial do cliente
"number": "123",
"complement": "Apto 404" // Opcional
}
```
* **Response Body (Sucesso - 201 Created):**
```json
{
"id": 123, // ID do novo usuário/cliente
"email": "[email protected]",
"name": "Nome Completo do Cliente",
"role": "CLIENT", // Sempre retorna CLIENT no registro inicial
"phone": "51999998888",
"active": true, // ou false, exclusão logica
"verified": false, // ou true, dependendo da verificação de email
"cep": "90000000",
"address": "Rua Exemplo",
"number": "123",
"complement": "Apto 404"
}
```
### 3. Atualizar Cliente para Vendedor/Loja
* **Endpoint :** `POST /api/store/create` (requer autenticação como cliente)
* **Observação:** Este fluxo permite que um usuário 'CLIENT' existente se torne um 'STORE', adicionando informações da loja. O ID do usuário é mantido e compartilhado pela loja.
* **Request Body:**
```json
{
"idUser": 123, // ID do usuário que está criando a loja
"storeName": "Nome Fantasia da Loja",
"cnpj": "12345678000199",
"addressDTO": {
"cep": "90000111",
"street": "Nome da Rua",
"number": 100,
"unit": "Loja B"
},
"description": "Descrição detalhada da loja e seus produtos.",
"profileImgUrl": "https://exemplo.com/imagem_perfil.jpg",
"gallery": [
"https://exemplo.com/foto_galeria1.jpg",
"https://exemplo.com/foto_galeria2.jpg"
]
}
```
* **Exemplo de Resposta (Sucesso - 200 OK):** (Retorna os dados da loja criada)
```json
{
"idStore": 123, //Mesmo id do user
"storeName": "Nome Fantasia da Loja",
"cnpj": "12345678000199",
"address": {
"cep": "90000111",
"street": "Nome da Rua",
"number": 100,
"unit": "Loja B"
// ... outros campos de endereço podem vir aqui
},
"description": "Descrição detalhada da loja e seus produtos.",
"profileImgUrl": "https://exemplo.com/imagem_perfil.jpg",
"gallery": [
"https://exemplo.com/foto_galeria1.jpg",
"https://exemplo.com/foto_galeria2.jpg"
]
// ID do usuário associado pode ou não ser retornado aqui
}
```
## Lojas (`/api/stores` - exemplos)
### 1. Listar Lojas
* **Endpoint (inferido):** `GET /api/stores` ou `GET /api/search/stores?q={termo}`
* **Response Body (Sucesso - 200 OK):** (Array de Lojas)
```json
[
{
"name": "Loja Tecidos Nossa Senhora",
"description": "Somos uma empresa tradicional e que ao longo de seus 60 anos consolidou sua posição no setor têxtil.",
"CEP": "90000000",
"address": "Av. Guaíba, 2658 - Porto Alegre/RS", // Verificar formato do endereço
"number": "2658",
"complement": "apt 4",
"rating": 8.4,
"photo": "https://picsum.photos/1000/1000",
},
{
"name": "Estilo & Cia",
"description": "Outra descrição...",
"CEP": "90000000",
"address": "Av. Guaíba, 2658 - Porto Alegre/RS", // Verificar formato do endereço
"number": "2658",
"complement": "apt 4",
"rating": 8.4,
"photo": "https://picsum.photos/1000/1000",
}
// ... mais lojas
]
```
### 2. Listar produtos de uma loja
* **Endpoint (inferido):** `GET /api/stores/{storeId}/products` ou similar
* **Response Body (Sucesso - 200 OK):**
```json
{
name: "Camiseta Esportiva Dry Fit",
description: "Camiseta leve e respirável, ideal para atividades físicas.",
photo: "https://picsum.photos/id/1041/200/300",
category: "Roupas",
characteristics: [
{ name: "Cor", options: ["Azul", "Preto"] },
{ name: "Tamanho", options: ["P", "M", "G"] },
],
variations: [
{ options: { Cor: "Azul", Tamanho: "P" }, price: 90.9, stock: 10 },
{ options: { Cor: "Preto", Tamanho: "M" }, price: 80.9, stock: 5 },
],
views: 120,
date: "2025-05-01",
},
{
name: "Calça Jeans Slim Fit",
description: "Calça jeans com corte ajustado e confortável.",
photo: "https://picsum.photos/id/1042/200/300",
category: "Roupas",
characteristics: [
{ name: "Cor", options: ["Azul Claro", "Azul Escuro"] },
{ name: "Tamanho", options: ["38", "40", "42"] },
],
variations: [
{ options: { Cor: "Azul Claro", Tamanho: "38" }, price: 89.9, stock: 8 },
{ options: { Cor: "Azul Escuro", Tamanho: "40" }, price: 89.9, stock: 12 },
],
views: 200,
date: "2025-04-28",
},
//... mais produtos
```
## Produtos (`/api/products` - exemplos)
### 1. Adicionar Produto
* **Endpoint (inferido):** ex: `POST /api/stores/{storeId}/products`)
* **Request Body:**
```json
{
"name": "Calça Jeans Slim Fit",
"description": "Calça jeans com corte ajustado e confortável.",
"photo": "URL_DA_IMAGEM_BASE64_OU_LINK", // Verificar como a imagem é enviada
"category": "Roupas",
"characteristics": [
{ "name": "Cor", "options": ["Azul Claro", "Azul Escuro"] },
{ "name": "Tamanho", "options": ["38", "40", "42"] }
],
"variations": [
{ "options": { "Cor": "Azul Claro", "Tamanho": "38" }, "price": 89.9, "stock": 8 },
{ "options": { "Cor": "Azul Escuro", "Tamanho": "40" }, "price": 89.9, "stock": 12 }
]
}
```
* **Response Body (Sucesso - 201 Created):** (Retorna o produto criado, talvez com ID)
```json
{
"id": "produto-12345", // ID gerado pelo backend
"name": "Calça Jeans Slim Fit",
"description": "Calça jeans com corte ajustado e confortável.",
"photo": "URL_DA_IMAGEM_ARMAZENADA",
"category": "Roupas",
"characteristics": [
{ "name": "Cor", "options": ["Azul Claro", "Azul Escuro"] },
{ "name": "Tamanho", "options": ["38", "40", "42"] }
],
"variations": [
{ "options": { "Cor": "Azul Claro", "Tamanho": "38" }, "price": 89.9, "stock": 8 },
{ "options": { "Cor": "Azul Escuro", "Tamanho": "40" }, "price": 89.9, "stock": 12 }
],
"views": 0,
"date": "2025-06-06" // Data de criação
}
```
### 2. Listar Produtos
* **Endpoint (inferido):** `GET /api/products` ou `GET /api/search/products?q={termo}`
* **Response Body (Sucesso - 200 OK):** (Array de Produtos)
```json
[
{
"name": "Camiseta Esportiva Dry Fit",
"description": "Camiseta leve e respirável, ideal para atividades físicas.",
"photo": "https://picsum.photos/id/1041/200/300",
"category": "Roupas",
"characteristics": [
{ "name": "Cor", "options": ["Azul", "Preto"] },
{ "name": "Tamanho", "options": ["P", "M", "G"] }
],
"variations": [
{ "options": { "Cor": "Azul", "Tamanho": "P" }, "price": 59.9, "stock": 10 },
{ "options": { "Cor": "Preto", "Tamanho": "M" }, "price": 59.9, "stock": 5 }
],
"views": 120,
"date": "2025-05-01"
},
// ... mais produtos
]
```
---
*Estes são apenas exemplos baseados no código frontend. É crucial validar e complementar esta informação com a documentação oficial da API (Swagger) do backend.*
Clone repository
  • API Backend
  • Escopo e Cronograma
  • Frontend
  • Processo
  • arquitetura
  • banco de dados
  • codigo
  • configuracao
  • design
    • mockups
  • Home
  • infraestrutura