# 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 }'