API Documentation - Pixley Crypto Transactions
Esta documentação descreve os principais endpoints da API do sistema Pixley Crypto Transactions.
Base URL
Autenticação
Todos os endpoints requerem autenticação via JWT token e credenciais de API:
💡 As credenciais de API (API key e Secret key) devem ser obtidas através do nosso suporte.
Registro de Usuário
Endpoint público para registro de novos usuários
Permite o registro público de novos usuários no sistema Pixley Crypto Transactions, com suporte completo para upload de documentos de identificação (frente e verso) durante o processo de cadastro.
Requisição
Content-Type: multipart/form-data { "name": "João Silva", "email": "joao.silva@example.com", "password": "MinhaSenh@123!", "user_type": "user", "document_number": "123.456.789-00", "files": ["documento_frente.jpg", "documento_verso.jpg"] }
Resposta
{ "message": "User registered successfully", "user": { "user_id": "123e4567-e89b-12d3-a456-426614174000", "name": "João Silva", "email": "joao.silva@example.com", "user_type": "user", "document_number": "123.456.789-00", "is_active": true, "created_at": "2024-01-15T10:30:00Z" }, "files": [ { "fileId": "456e7890-e89b-12d3-a456-426614174001", "filename": "document_frente_123e4567.jpg", "originalFilename": "documento_frente.jpg", "mimetype": "image/jpeg", "size": 2048576, "uploadedAt": "2024-01-15T10:30:00Z" }, { "fileId": "456e7890-e89b-12d3-a456-426614174002", "filename": "document_verso_123e4567.jpg", "originalFilename": "documento_verso.jpg", "mimetype": "image/jpeg", "size": 1856432, "uploadedAt": "2024-01-15T10:30:00Z" } ], "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }
Parâmetros da Requisição
📋 CAMPOS OBRIGATÓRIOS:
name
Nome completo do usuário (2-100 caracteres)email
Email único do usuário (formato válido)password
Senha do usuário (mínimo 8 caracteres)user_type
Tipo de usuário (user, admin, super_admin)document_number
Número do documento (CPF, CNPJ, etc.)📁 CAMPOS OPCIONAIS:
files
Documentos de identificação para upload (recomendado: frente e verso do documento)📤 UPLOAD DE DOCUMENTOS DE IDENTIFICAÇÃO:
Tipos aceitos
PNG, JPG/JPEG, PDFTamanho máximo
10MB por arquivoDocumentos recomendados
Quantidade máxima
10 arquivos por requisiçãoContent-Type
multipart/form-data🔐 SEGURANÇA:
Hash automático de senhas usando bcrypt
Validação rigorosa de tipos de arquivo
Token JWT retornado para autenticação imediata
Endpoint público (não requer autenticação prévia)
✨ FUNCIONALIDADES:
Upload simultâneo de documentos de identificação durante o registro
Processamento automático de documentos (frente e verso)
Validação de integridade dos arquivos de imagem/PDF
Criação imediata do usuário com documentos vinculados
Retorno de token para acesso imediato ao sistema
Suporte para múltiplos tipos de documento (RG, CNH, Passaporte)
Pagamento de Boleto
Processa pagamento de boleto
Processa o pagamento de um boleto através da fila de processamento assíncrono
Requisição
Authorization: Bearer {seu_token_jwt} Content-Type: application/json { "codBarraLinhaDigitavel": "34191790010104351004791020150008291070026000", "valorPagar": 260.00, "dataVencimento": "2024-12-31" }
Resposta
{ "success": true, "message": "Boleto adicionado à fila de processamento", "boleto": { "id": "550e8400-e29b-41d4-a716-446655440000", "txId": "34191790010104351004791020150008291070026000", "nominalValue": 260.00, "dueDate": "2024-12-31", "status": "PENDING", "transactionId": "tx_123456789", "createdAt": "2024-01-15T10:30:00Z" }, "queueInfo": { "jobId": "job_987654321", "position": 1 } }
Parâmetros da Requisição
Headers obrigatórios:
Authorization
Bearer {seu_token_jwt}Campos da requisição:
codBarraLinhaDigitavel
Código de barras ou linha digitável do boleto (obrigatório)valorPagar
Valor a ser pago (opcional - será extraído do código se não fornecido)dataVencimento
Data de vencimento no formato YYYY-MM-DD (opcional)Status disponíveis:
PENDING
Boleto criado, aguardando pagamentoPAID
Boleto pago com sucessoEXPIRED
Boleto vencidoCANCELLED
Boleto cancelado🔄 Processamento Assíncrono:
Os pagamentos são processados via fila (boletoPaymentQueue)
Retorna informações da posição na fila
Status atualizado automaticamente após processamento
Listar Boletos do Usuário
Lista boletos do usuário autenticado
Lista os boletos do usuário autenticado com filtros e paginação
Requisição
Authorization: Bearer {seu_token_jwt}
Resposta
{ "boletos": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "txId": "34191790010104351004791020150008291070026000", "nominalValue": 260.00, "dueDate": "2024-12-31", "status": "PENDING", "createdAt": "2024-01-15T10:30:00Z", "updatedAt": "2024-01-15T10:30:00Z" } ], "pagination": { "page": 1, "limit": 10, "total": 5, "totalPages": 1, "hasNext": false, "hasPrev": false } }
Parâmetros da Requisição
Headers obrigatórios:
Authorization
Bearer {seu_token_jwt}Parâmetros de Query (opcionais):
page
Número da página (padrão: 1)limit
Itens por página (padrão: 20)status
Filtrar por status (PENDING, PAID, EXPIRED, CANCELLED)startDate
Data inicial (YYYY-MM-DD)endDate
Data final (YYYY-MM-DD)🔍 Funcionalidades:
Paginação automática
Filtros por status e período
Acesso apenas aos boletos do usuário autenticado
Informações completas de cada boleto
Off-Ramp (Saque Crypto para PIX)
Processa transação off-ramp
Processa uma transação off-ramp (saque de crypto para PIX)
Requisição
x-api-key: <your-api-key> x-secret-key: <your-secret-key> { "source_currency": "USDT", "source_amount": 50.00, "target_currency": "PIX", "pix_key": "user@example.com", "pix_key_type": "email", "recipient_name": "João Silva", "recipient_document": "12345678901", "network": "Polygon", "externalId": "ext-withdrawal-123" }
Resposta
{ "withdrawal_id": "withdrawal_1234567890_abc123", "status": "processing", "source_currency": "USDT", "source_amount": 50.00, "target_currency": "PIX", "estimated_amount_received": 49.00, "estimated_completion": "2024-01-15T10:30:00Z", "message": "Withdrawal is being processed. Blockchain operations have been queued and PIX transfer will be initiated shortly." }
Parâmetros da Requisição
Headers obrigatórios:
Authorization
Bearer <token>x-api-key
<your-api-key>x-secret-key
<your-secret-key>Query Parameters:
simulation
(boolean, opcional) Se true, retorna apenas dados de simulaçãoCampos do corpo da requisição:
source_currency
Moeda de origem (ex.: "USDT")source_amount
Valor a ser sacadotarget_currency
"PIX"pix_key
Chave PIX do destinatáriopix_key_type
Tipo da chave PIX ("email", "cpf", etc.)recipient_name
Nome do destinatáriorecipient_document
Documento do destinatárionetwork
Rede blockchain (ex.: "Polygon")externalId
ID externo da transaçãoOn-Ramp (Compra Crypto com PIX)
Processa transação on-ramp
Processa uma transação on-ramp (compra de crypto com PIX)
Requisição
x-api-key: <your-api-key> x-secret-key: <your-secret-key> { "source_currency": "BRL", "source_amount": 100.00, "target_currency": "USDT", "wallet_address": "0x742d35Cc6634C0532925a3b8D4C9db96590c6C87", "network": "Polygon" }
Resposta
{ "id": "trade-123", "status": "pending", "qr_code": "00020126580014br.gov.bcb.pix...", "source_currency": "BRL", "source_amount": 100.00, "target_currency": "USDT", "target_amount": 18.52, "wallet_address": "0x742d35Cc6634C0532925a3b8D4C9db96590c6C87", "network": "Polygon", "created_at": "2024-01-15T10:30:00Z" }
Parâmetros da Requisição
Headers obrigatórios:
Authorization
Bearer <token>Query Parameters:
simulation
(boolean, opcional) Se true, retorna apenas dados de simulaçãoCampos do corpo da requisição:
source_currency
"BRL"source_amount
Valor em BRL a ser convertidotarget_currency
Moeda de destino (ex.: "USDT")wallet_address
Endereço da carteira de destinonetwork
Rede blockchain (ex.: "Polygon")Buscar Transação On-Ramp
Consulta detalhes de transação
Busca detalhes de uma transação on-ramp específica
Requisição
x-api-key: <your-api-key> x-secret-key: <your-secret-key>
Resposta
{ "qrCode": { "id": "qr-123", "uuid": "550e8400-e29b-41d4-a716-446655440000", "qr_code": "00020126580014br.gov.bcb.pix...", "source_currency": "cPix", "source_amount": 100.00, "target_currency": "USDT", "target_amount": 18.52, "network": "Polygon", "wallet_address": "0x742d35Cc6634C0532925a3b8D4C9db96590c6C87", "fees": 5.00, "pix_status": "pending", "trade_price": 5.40, "net_amount": 95.00, "updated_at": "2024-01-15T10:30:00Z", "tx_hash": "0xabc123...", "explorer_url": "https://polygonscan.com/tx/0xabc123..." } }
Parâmetros da Requisição
Headers obrigatórios:
Authorization
Bearer <token>x-api-key
<your-api-key>x-secret-key
<your-secret-key>Path Parameters:
transactionId
ID da transação a ser consultadaObservação:
Este endpoint não requer corpo da requisição
Consultar Limites do Usuário
Limites e uso atual
Permite que usuários autenticados consultem seus próprios limites e uso atual
Requisição
Resposta
{ "dailyLimits": { "amount": 1000.00, "count": 10, "active": true }, "monthlyLimits": { "amount": 30000.00, "count": 100, "active": true }, "dailyUsage": { "amount": 250.00, "count": 3 }, "monthlyUsage": { "amount": 5500.00, "count": 25 }, "remainingLimits": { "daily": { "amount": 750.00, "count": 7 }, "monthly": { "amount": 24500.00, "count": 75 } } }
Parâmetros da Requisição
Headers obrigatórios:
x-api-key
<your-api-key>x-secret-key
<your-secret-key>Observação:
Nenhum parâmetro adicional necessário
Webhooks
O sistema envia notificações via webhook para eventos importantes. Todos os webhooks são enviados via POST com assinatura HMAC-SHA256 no header X-Signature.
Eventos Suportados
DEPOSIT
Quando um depósito é recebido
WITHDRAWAL
Quando um saque é processado
PAYMENT REQUEST
Quando uma solicitação de pagamento é criada
Estrutura Base do Webhook
{ "eventId": "evt_123e4567-e89b-12d3-a456-426614174000", "eventType": "DEPOSIT", "userId": "456e7890-e89b-12d3-a456-426614174000", "timestamp": "2024-01-15T10:30:00Z", "data": { // Dados específicos do evento } }
Exemplos de Webhooks
Webhook - Evento DEPOSIT
Exemplo de webhook enviado quando um depósito é recebido
Exemplo de Payload
{ "eventId": "evt_123e4567-e89b-12d3-a456-426614174000", "eventType": "DEPOSIT", "userId": "456e7890-e89b-12d3-a456-426614174000", "timestamp": "2024-01-15T10:30:00Z", "data": { "transactionId": "txn_789abc123def456", "amount": "100.00", "currency": "BRL", "status": "completed", "pix_key": "user@example.com", "sender_name": "João Silva", "sender_document": "12345678901" } }
Webhook - Evento WITHDRAWAL
Exemplo de webhook enviado quando um saque é processado
Exemplo de Payload
{ "eventId": "evt_456e7890-e89b-12d3-a456-426614174001", "eventType": "WITHDRAWAL", "userId": "456e7890-e89b-12d3-a456-426614174000", "timestamp": "2024-01-15T10:35:00Z", "data": { "withdrawal_id": "withdrawal_1234567890_abc123", "status": "completed", "source_currency": "USDT", "source_amount": 50.00, "target_currency": "PIX", "amount_received": 49.00, "tx_hash": "0xabc123def456...", "network": "Polygon", "pix_key": "user@example.com", "recipient_name": "João Silva" } }
Webhook - Evento PAYMENT REQUEST
Exemplo de webhook enviado quando uma solicitação de pagamento é criada
Exemplo de Payload
{ "eventId": "evt_789abc12-e89b-12d3-a456-426614174002", "eventType": "PAYMENT_REQUEST", "userId": "456e7890-e89b-12d3-a456-426614174000", "timestamp": "2024-01-15T10:40:00Z", "data": { "payment_request_id": "pr_123456789", "amount": "250.00", "currency": "BRL", "status": "pending", "qr_code": "00020126580014br.gov.bcb.pix...", "expires_at": "2024-01-15T11:40:00Z", "description": "Pagamento de serviços" } }