Files
portalweb-api/API.md
2025-04-02 18:18:13 -03:00

300 lines
5.6 KiB
Markdown

# Portal Juru API Documentation
## Índice
1. [Autenticação](#autenticação)
2. [Endpoints](#endpoints)
- [Consulta de Dados](#consulta-de-dados)
- [Pedidos e Pagamentos](#pedidos-e-pagamentos)
3. [Modelos de Dados](#modelos-de-dados)
4. [Exemplos de Uso](#exemplos-de-uso)
5. [Códigos de Erro](#códigos-de-erro)
## Autenticação
A API utiliza autenticação JWT. Para acessar os endpoints protegidos, inclua o token no header:
```
Authorization: Bearer seu-token-jwt
```
## Endpoints
### Consulta de Dados
#### Listar Lojas
```http
GET /api/v1/data-consult/stores
```
**Resposta**
```json
[
{
"id": "001",
"name": "Loja Principal",
"store": "001 - Loja Principal"
}
]
```
#### Listar Vendedores
```http
GET /api/v1/data-consult/sellers
```
**Resposta**
```json
[
{
"id": "001",
"name": "João Silva"
}
]
```
#### Consultar Faturamento
```http
GET /api/v1/data-consult/billings
```
**Resposta**
```json
[
{
"id": "001",
"date": "2024-04-02T10:00:00Z",
"total": 1000.00
}
]
```
#### Filtrar Clientes
```http
GET /api/v1/data-consult/customers/:filter
```
**Parâmetros**
- `filter`: Termo de busca (nome, documento, etc.)
**Resposta**
```json
[
{
"id": "001",
"name": "Maria Silva",
"document": "123.456.789-00"
}
]
```
#### Buscar Produtos
```http
GET /api/v1/data-consult/products/:filter
```
**Parâmetros**
- `filter`: Termo de busca (nome, código, etc.)
**Resposta**
```json
[
{
"id": "001",
"name": "Produto Exemplo",
"manufacturerCode": "ABC123"
}
]
```
### Pedidos e Pagamentos
#### Listar Pedidos da Loja
```http
GET /api/v1/orders-payment/orders/:id
```
**Parâmetros**
- `id`: ID da loja
**Resposta**
```json
[
{
"createDate": "2024-04-02T10:00:00Z",
"storeId": "001",
"orderId": 12345,
"customerId": "001",
"customerName": "João Silva",
"sellerId": "001",
"sellerName": "Maria Santos",
"billingId": "001",
"billingName": "Cartão de Crédito",
"planId": "001",
"planName": "3x sem juros",
"amount": 1000.00,
"installments": 3,
"amountPaid": 1000.00
}
]
```
#### Buscar Pedido Específico
```http
GET /api/v1/orders-payment/orders/:id/:orderId
```
**Parâmetros**
- `id`: ID da loja
- `orderId`: ID do pedido
**Resposta**
```json
{
"createDate": "2024-04-02T10:00:00Z",
"storeId": "001",
"orderId": 12345,
"customerId": "001",
"customerName": "João Silva",
"sellerId": "001",
"sellerName": "Maria Santos",
"billingId": "001",
"billingName": "Cartão de Crédito",
"planId": "001",
"planName": "3x sem juros",
"amount": 1000.00,
"installments": 3,
"amountPaid": 1000.00
}
```
#### Listar Pagamentos do Pedido
```http
GET /api/v1/orders-payment/payments/:id
```
**Parâmetros**
- `id`: ID do pedido
**Resposta**
```json
[
{
"orderId": 12345,
"payDate": "2024-04-02T10:00:00Z",
"card": "**** **** **** 1234",
"installments": 3,
"flagName": "VISA",
"type": "CREDITO",
"amount": 1000.00,
"userId": "001",
"nsu": "123456789",
"auth": "A12345"
}
]
```
#### Criar Pagamento
```http
POST /api/v1/orders-payment/payments/create
```
**Corpo da Requisição**
```json
{
"orderId": 12345,
"card": "**** **** **** 1234",
"auth": "A12345",
"nsu": "123456789",
"installments": 3,
"amount": 1000.00,
"flagName": "VISA",
"paymentType": "CREDITO",
"userId": 1
}
```
#### Criar Fatura
```http
POST /api/v1/orders-payment/invoice/create
```
**Corpo da Requisição**
```json
{
"orderId": 12345,
"userId": 1
}
```
## Modelos de Dados
### OrderDto
```typescript
interface OrderDto {
createDate: Date; // Data de criação do pedido
storeId: string; // ID da loja
orderId: number; // ID do pedido
customerId: string; // ID do cliente
customerName: string; // Nome do cliente
sellerId: string; // ID do vendedor
sellerName: string; // Nome do vendedor
billingId: string; // ID da forma de pagamento
billingName: string; // Nome da forma de pagamento
planId: string; // ID do plano de pagamento
planName: string; // Nome do plano de pagamento
amount: number; // Valor total do pedido
installments: number; // Número de parcelas
amountPaid: number; // Valor total pago
}
```
### PaymentDto
```typescript
interface PaymentDto {
orderId: number; // ID do pedido
payDate: Date; // Data do pagamento
card: string; // Número do cartão
installments: number; // Número de parcelas
flagName: string; // Nome da bandeira
type: string; // Tipo de pagamento
amount: number; // Valor do pagamento
userId: string; // ID do usuário
nsu: string; // NSU da transação
auth: string; // Código de autorização
}
```
## Códigos de Erro
| Código | Descrição |
|--------|-----------|
| 400 | Requisição inválida |
| 401 | Não autorizado |
| 403 | Acesso negado |
| 404 | Recurso não encontrado |
| 500 | Erro interno do servidor |
## Exemplos de Uso
### Exemplo de Requisição com cURL
```bash
# Listar pedidos de uma loja
curl -X GET "http://localhost:3000/api/v1/orders-payment/orders/001" \
-H "Authorization: Bearer seu-token-jwt"
# Criar novo pagamento
curl -X POST "http://localhost:3000/api/v1/orders-payment/payments/create" \
-H "Authorization: Bearer seu-token-jwt" \
-H "Content-Type: application/json" \
-d '{
"orderId": 12345,
"card": "**** **** **** 1234",
"auth": "A12345",
"nsu": "123456789",
"installments": 3,
"amount": 1000.00,
"flagName": "VISA",
"paymentType": "CREDITO",
"userId": 1
}'