PATCH
https://api.myidvirtual.com
/
user
/
credits-transfer
Transferir Créditos
curl --request PATCH \
  --url https://api.myidvirtual.com/user/credits-transfer \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "receiver": "<string>",
  "credits": 123
}
'
{
  "message": "Transferência realizada com sucesso"
}

Transferir Créditos

Endpoint para transferência de créditos entre usuários. Permite que administradores, masters e revendedores transfiram créditos para outros usuários de sua hierarquia.

Autenticação

Authorization
string
required
Bearer token JWT do usuário autenticado (ADMIN, MASTER ou RESALE)

Parâmetros

Request Body

receiver
string
required
ID do usuário que receberá os créditos
credits
number
required
Quantidade de créditos a transferir

Responses

{
  "message": "Transferência realizada com sucesso"
}

Exemplo de Requisição

curl --location --request PATCH 'http://localhost:3333/user/credits-transfer' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
--header 'Content-Type: application/json' \
--data-raw '{
  "receiver": "987e6543-e21b-12d3-a456-426614174000",
  "credits": 50
}'

Regras de Negócio

Hierarquia de Permissões

A transferência de créditos segue uma hierarquia:
  • ADMIN: Pode transferir para qualquer usuário
  • MASTER: Pode transferir apenas para usuários de sua árvore
  • RESALE: Pode transferir apenas para seus clientes diretos
  • CUSTOMER: Não pode transferir créditos

Validações Automáticas

  1. Saldo: Verifica se remetente possui créditos suficientes
  2. Hierarquia: Valida se destinatário está na hierarquia do remetente
  3. Valor: Quantidade deve ser maior que zero e número inteiro
  4. Status: Ambos usuários devem estar ativos

Histórico e Auditoria

Todas as transferências são registradas automaticamente:
  • Timestamp: Data e hora da transferência
  • Remetente: Usuário que enviou os créditos
  • Destinatário: Usuário que recebeu os créditos
  • Quantidade: Valor transferido
Transferências de créditos são irreversíveis. Certifique-se de validar o destinatário e a quantidade antes de confirmar.

Transferência em Lote

Webhook/Notificação

Configure notificações para transferências:
// Enviar notificação após transferência
const notificarTransferencia = async (transferData) => {
  // Notificar remetente
  console.log(`Você transferiu ${transferData.transfer.amount} créditos para ${transferData.receiver.name}`);

  // Notificar destinatário
  // Implementar lógica de notificação (email, push, etc)
};
Para administradores, use o parâmetro owner para transferir créditos de outro usuário sem debitar do próprio saldo.

Próximos Passos

  1. Implementar limite diário de transferências
  2. Adicionar confirmação por e-mail para grandes valores
  3. Criar relatório de transferências
  4. Configurar alertas de saldo baixo