Enviar arquivos para "/"
This commit is contained in:
292
DOCUMENTATION.md
Normal file
292
DOCUMENTATION.md
Normal file
@@ -0,0 +1,292 @@
|
||||
# Documentação de API - Biblioteca do Usuário (GameVerse)
|
||||
|
||||
> **Versão**: 1.0.0
|
||||
> **Data**: 28/04/2026
|
||||
> **Serviço**: Biblioteca do Usuário (Library Service)
|
||||
|
||||
---
|
||||
|
||||
## Base URLs
|
||||
|
||||
### Ambiente de Desenvolvimento
|
||||
```
|
||||
http://localhost:3005
|
||||
```
|
||||
|
||||
### Ambiente de Produção
|
||||
```
|
||||
https://api.gameverse.com.br/library
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Endpoints
|
||||
|
||||
| Método | Endpoint | Descrição |
|
||||
|--------|----------|------------|
|
||||
| POST | `/library/add` | Adiciona item à biblioteca |
|
||||
| GET | `/library/user/:user_id` | Lista itens do usuário |
|
||||
| POST | `/library/integration/payment-approved` | Confirmação de pagamento |
|
||||
|
||||
---
|
||||
|
||||
## 1. Adicionar Item à Biblioteca
|
||||
|
||||
### POST `/library/add`
|
||||
|
||||
Adiciona um item manualmente à biblioteca do usuário.
|
||||
|
||||
**URL Completa (Produção)**:
|
||||
```
|
||||
POST https://api.gameverse.com.br/library/add
|
||||
```
|
||||
|
||||
**Request Body**:
|
||||
```json
|
||||
{
|
||||
"user_id": 1,
|
||||
"type": "game",
|
||||
"item_id": 123,
|
||||
"title": "The Witcher 3",
|
||||
"platform": "Steam"
|
||||
}
|
||||
```
|
||||
|
||||
**Parâmetros**:
|
||||
| Campo | Tipo | Obrigatório | Descrição |
|
||||
|-------|------|-------------|-----------|
|
||||
| user_id | integer | ✅ | ID do usuário |
|
||||
| type | string | ✅ | "game" ou "gift_card" |
|
||||
| item_id | integer | ✅ | ID do item na loja |
|
||||
| title | string | ✅ | Título do jogo/cartão |
|
||||
| platform | string | ❌ | Plataforma (Steam, Epic, etc) |
|
||||
|
||||
**Response Sucesso (200)**:
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Item adicionado à biblioteca com sucesso",
|
||||
"data": {
|
||||
"id": 1,
|
||||
"user_id": 1,
|
||||
"type": "game",
|
||||
"item_id": 123,
|
||||
"title": "The Witcher 3",
|
||||
"platform": "Steam",
|
||||
"acquired_at": "2026-04-28T10:00:00.000Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Response Erro (400/500)**:
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"message": "Erro ao adicionar item",
|
||||
"error": "Mensagem de erro"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Listar Biblioteca do Usuário
|
||||
|
||||
### GET `/library/user/:user_id`
|
||||
|
||||
Retorna todos os itens da biblioteca de um usuário específico.
|
||||
|
||||
**URL Completa (Produção)**:
|
||||
```
|
||||
GET https://api.gameverse.com.br/library/user/1
|
||||
```
|
||||
|
||||
**Parâmetros na URL**:
|
||||
| Campo | Tipo | Descrição |
|
||||
|-------|------|-----------|
|
||||
| user_id | integer | ID do usuário (path param) |
|
||||
|
||||
**Response Sucesso (200)**:
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Biblioteca carregada com sucesso",
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"user_id": 1,
|
||||
"type": "game",
|
||||
"item_id": 123,
|
||||
"title": "The Witcher 3: Wild Hunt",
|
||||
"platform": "Steam",
|
||||
"acquired_at": "2026-04-28T10:00:00.000Z"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"user_id": 1,
|
||||
"type": "gift_card",
|
||||
"item_id": 456,
|
||||
"title": "Steam Gift Card $50",
|
||||
"platform": "Steam",
|
||||
"acquired_at": "2026-04-27T15:30:00.000Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Response Erro (404)**:
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"message": "Usuário não encontrado",
|
||||
"error": "Nenhum item na biblioteca"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Confirmação de Pagamento (Integração)
|
||||
|
||||
### POST `/library/integration/payment-approved`
|
||||
|
||||
Endpoint para integração com o serviço de pagamentos. Recebe confirmação de pagamento aprovado e adiciona o item automaticamente à biblioteca.
|
||||
|
||||
**URL Completa (Produção)**:
|
||||
```
|
||||
POST https://api.gameverse.com.br/library/integration/payment-approved
|
||||
```
|
||||
|
||||
**Request Body**:
|
||||
```json
|
||||
{
|
||||
"user_id": 1,
|
||||
"type": "game",
|
||||
"item_id": 789,
|
||||
"title": "Cyberpunk 2077",
|
||||
"platform": "GOG"
|
||||
}
|
||||
```
|
||||
|
||||
**Fluxo de Integração**:
|
||||
1. Serviço de pagamentos envia dados após aprovação
|
||||
2. Biblioteca verifica se item já existe
|
||||
3. Se não existir, adiciona ao banco
|
||||
4. Retorna confirmação de sucesso ou erro
|
||||
|
||||
**Response Sucesso (200)**:
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Pagamento confirmado e item adicionado à biblioteca",
|
||||
"data": {
|
||||
"user_id": 1,
|
||||
"item_id": 789,
|
||||
"title": "Cyberpunk 2077"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Response Item Duplicado (200)**:
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Item já está na biblioteca do usuário",
|
||||
"data": {
|
||||
"user_id": 1,
|
||||
"item_id": 789,
|
||||
"title": "Cyberpunk 2077"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Códigos de Status HTTP
|
||||
|
||||
| Código | Descrição |
|
||||
|--------|-----------|
|
||||
| 200 | Sucesso |
|
||||
| 400 | Erro na requisição (dados inválidos) |
|
||||
| 404 | Recurso não encontrado |
|
||||
| 500 | Erro interno do servidor |
|
||||
|
||||
---
|
||||
|
||||
## Padrão de Respostas
|
||||
|
||||
Todas as respostas seguem este formato:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": boolean,
|
||||
"message": string,
|
||||
"data": any,
|
||||
"error": any
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Headers Obrigatórios
|
||||
|
||||
Para todas as requisições, incluir:
|
||||
|
||||
```
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer <token_jwt>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### cURL - Adicionar Item
|
||||
|
||||
```bash
|
||||
curl -X POST https://api.gameverse.com.br/library/add \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer <token>" \
|
||||
-d '{
|
||||
"user_id": 1,
|
||||
"type": "game",
|
||||
"item_id": 123,
|
||||
"title": "The Witcher 3",
|
||||
"platform": "Steam"
|
||||
}'
|
||||
```
|
||||
|
||||
### cURL - Listar Biblioteca
|
||||
|
||||
```bash
|
||||
curl -X GET https://api.gameverse.com.br/library/user/1 \
|
||||
-H "Authorization: Bearer <token>"
|
||||
```
|
||||
|
||||
### JavaScript (Fetch)
|
||||
|
||||
```javascript
|
||||
// Adicionar item
|
||||
fetch('https://api.gameverse.com.br/library/add', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': 'Bearer <token>'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
user_id: 1,
|
||||
type: 'game',
|
||||
item_id: 123,
|
||||
title: 'The Witcher 3',
|
||||
platform: 'Steam'
|
||||
})
|
||||
})
|
||||
.then(res => res.json())
|
||||
.then(data => console.log(data));
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Contato
|
||||
|
||||
Desenvolvido por: André de Oliveira Braga e Izadora Lima de Mendonça
|
||||
Projeto GameVerse - Microsserviços
|
||||
Centro Universitário Uninorte - Curso de Sistemas de Informação
|
||||
2893
package-lock.json
generated
2893
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
60
package.json
60
package.json
@@ -1,30 +1,32 @@
|
||||
{
|
||||
"name": "library-service",
|
||||
"version": "1.0.0",
|
||||
"description": "🎮 Microsserviço da Biblioteca do Usuário - GameVerse. Gerencia jogos comprados e gift cards dos usuários.",
|
||||
"main": "app.js",
|
||||
"scripts": {
|
||||
"start": "node app.js",
|
||||
"dev": "nodemon app.js",
|
||||
"test": "echo \"Para testar, use o arquivo tests.http com REST Client\"",
|
||||
"setup-db": "echo \"Execute o arquivo schema.sql no MySQL Workbench\""
|
||||
},
|
||||
"keywords": ["gameverse", "library", "microservice", "nodejs", "mysql"],
|
||||
"author": "André de Oliveira Braga e Izadora Lima de Mendonça",
|
||||
"contributors": [
|
||||
"André de Oliveira Braga",
|
||||
"Izadora Lima de Mendonça"
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"express": "^4.18.2",
|
||||
"mysql2": "^3.9.0",
|
||||
"cors": "^2.8.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"nodemon": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
{
|
||||
"name": "library-service",
|
||||
"version": "1.0.0",
|
||||
"description": "🎮 Microsserviço da Biblioteca do Usuário - GameVerse. Gerencia jogos comprados e gift cards dos usuários.",
|
||||
"main": "app.js",
|
||||
"scripts": {
|
||||
"start": "node app.js",
|
||||
"dev": "nodemon app.js",
|
||||
"test": "echo \"Para testar, use o arquivo tests.http com REST Client\"",
|
||||
"setup-db": "echo \"Execute o arquivo schema.sql no MySQL Workbench\""
|
||||
},
|
||||
"keywords": ["gameverse", "library", "microservice", "nodejs", "mysql"],
|
||||
"author": "André de Oliveira Braga e Izadora Lima de Mendonça",
|
||||
"contributors": [
|
||||
"André de Oliveira Braga",
|
||||
"Izadora Lima de Mendonça"
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"dotenv": "^16.4.0",
|
||||
"express": "^4.18.2",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"mysql2": "^3.9.0",
|
||||
"cors": "^2.8.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"nodemon": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user