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:
nameNome completo do usuário (2-100 caracteres)emailEmail único do usuário (formato válido)passwordSenha do usuário (mínimo 8 caracteres)user_typeTipo de usuário (user, admin, super_admin)document_numberNúmero do documento (CPF, CNPJ, etc.)📁 CAMPOS OPCIONAIS:
filesDocumentos de identificação para upload (recomendado: frente e verso do documento)📤 UPLOAD DE DOCUMENTOS DE IDENTIFICAÇÃO:
Tipos aceitosPNG, JPG/JPEG, PDFTamanho máximo10MB por arquivoDocumentos recomendadosQuantidade máxima10 arquivos por requisiçãoContent-Typemultipart/form-data🔐 SEGURANÇA:
Hash automático de senhas usando bcryptValidação rigorosa de tipos de arquivoToken JWT retornado para autenticação imediataEndpoint público (não requer autenticação prévia)✨ FUNCIONALIDADES:
Upload simultâneo de documentos de identificação durante o registroProcessamento automático de documentos (frente e verso)Validação de integridade dos arquivos de imagem/PDFCriação imediata do usuário com documentos vinculadosRetorno de token para acesso imediato ao sistemaSuporte 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:
AuthorizationBearer {seu_token_jwt}Campos da requisição:
codBarraLinhaDigitavelCódigo de barras ou linha digitável do boleto (obrigatório)valorPagarValor a ser pago (opcional - será extraído do código se não fornecido)dataVencimentoData de vencimento no formato YYYY-MM-DD (opcional)Status disponíveis:
PENDINGBoleto criado, aguardando pagamentoPAIDBoleto pago com sucessoEXPIREDBoleto vencidoCANCELLEDBoleto cancelado🔄 Processamento Assíncrono:
Os pagamentos são processados via fila (boletoPaymentQueue)Retorna informações da posição na filaStatus atualizado automaticamente após processamentoListar 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:
AuthorizationBearer {seu_token_jwt}Parâmetros de Query (opcionais):
pageNúmero da página (padrão: 1)limitItens por página (padrão: 20)statusFiltrar por status (PENDING, PAID, EXPIRED, CANCELLED)startDateData inicial (YYYY-MM-DD)endDateData final (YYYY-MM-DD)🔍 Funcionalidades:
Paginação automáticaFiltros por status e períodoAcesso apenas aos boletos do usuário autenticadoInformações completas de cada boletoOff-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:
AuthorizationBearer <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_currencyMoeda de origem (ex.: "USDT")source_amountValor a ser sacadotarget_currency"PIX"pix_keyChave PIX do destinatáriopix_key_typeTipo da chave PIX ("email", "cpf", etc.)recipient_nameNome do destinatáriorecipient_documentDocumento do destinatárionetworkRede blockchain (ex.: "Polygon")externalIdID 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:
AuthorizationBearer <token>Query Parameters:
simulation(boolean, opcional) Se true, retorna apenas dados de simulaçãoCampos do corpo da requisição:
source_currency"BRL"source_amountValor em BRL a ser convertidotarget_currencyMoeda de destino (ex.: "USDT")wallet_addressEndereço da carteira de destinonetworkRede 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:
AuthorizationBearer <token>x-api-key<your-api-key>x-secret-key<your-secret-key>Path Parameters:
transactionIdID da transação a ser consultadaObservação:
Este endpoint não requer corpo da requisiçãoConsultar 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árioWebhooks
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"
}
}