Pixley Logo

API Documentation - Pixley Crypto Transactions

Esta documentação descreve os principais endpoints da API do sistema Pixley Crypto Transactions.

Base URL

https://crypto.sandbox.pixley.app

Autenticação

Todos os endpoints requerem autenticação via JWT token e credenciais de API:

x-api-key: <your-api-key>
x-secret-key: <your-secret-key>

💡 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

REGISTROUPLOADPÚBLICO

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
POST https://crypto.sandbox.pixley.app/api/signup
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, PDF
Tamanho máximo10MB por arquivo
Documentos recomendados
Quantidade máxima10 arquivos por requisição
Content-Typemultipart/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

BOLETOPAGAMENTO

Processa o pagamento de um boleto através da fila de processamento assíncrono

Requisição
POST https://crypto.sandbox.pixley.app/api/boletos/pay
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 pagamento
PAIDBoleto pago com sucesso
EXPIREDBoleto vencido
CANCELLEDBoleto 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

BOLETOCONSULTA

Lista os boletos do usuário autenticado com filtros e paginação

Requisição
GET https://crypto.sandbox.pixley.app/api/boletos
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á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

OFF-RAMPPIX

Processa uma transação off-ramp (saque de crypto para PIX)

Requisição
POST https://crypto.sandbox.pixley.app/api/trade/off-ramp
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ção

Campos do corpo da requisição:

source_currencyMoeda de origem (ex.: "USDT")
source_amountValor a ser sacado
target_currency"PIX"
pix_keyChave PIX do destinatário
pix_key_typeTipo da chave PIX ("email", "cpf", etc.)
recipient_nameNome do destinatário
recipient_documentDocumento do destinatário
networkRede blockchain (ex.: "Polygon")
externalIdID externo da transação

On-Ramp (Compra Crypto com PIX)

Processa transação on-ramp

ON-RAMPPIX

Processa uma transação on-ramp (compra de crypto com PIX)

Requisição
POST https://crypto.sandbox.pixley.app/api/trade/on-ramp
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ção

Campos do corpo da requisição:

source_currency"BRL"
source_amountValor em BRL a ser convertido
target_currencyMoeda de destino (ex.: "USDT")
wallet_addressEndereço da carteira de destino
networkRede blockchain (ex.: "Polygon")

Buscar Transação On-Ramp

Consulta detalhes de transação

ON-RAMPQUERY

Busca detalhes de uma transação on-ramp específica

Requisição
GET https://crypto.sandbox.pixley.app/api/transactions/:transactionId
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 consultada

Observação:

Este endpoint não requer corpo da requisição

Consultar Limites do Usuário

Limites e uso atual

LIMITSUSER

Permite que usuários autenticados consultem seus próprios limites e uso atual

Requisição
GET https://crypto.sandbox.pixley.app/api/api/users/me/limits
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

WEBHOOKDEPOSIT
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

WEBHOOKWITHDRAWAL
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

WEBHOOKPAYMENT
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"
  }
}