Documentação

Integrar

Eventos

O que mandar, quando, idempotência, lote e o que volta.

Cada fato do seu sistema vira um POST /v1/events. As regras do clube (editadas no Studio) decidem o que ele vale.

CampoTipoObrigatórioDescrição
participantstring (até 128)simSeu ID do usuário.
typestringsimFormato dominio.acao, minúsculo (ex.: order.paid).
idstring (até 128)recomendadoID único do fato no seu sistema. Repetir não conta de novo.
amountnúmeronãoValor em reais (ex.: 100 = R$ 100).
currency3 letrasnãoPadrão BRL.
occurred_atISO 8601nãoQuando aconteceu. Padrão: agora.
metaobjetonãoDetalhes livres (jogo, método de pagamento…). Nada de dados pessoais.
GrupoEventos
Contauser.signed_up, user.verified, session.started, profile.completed
Dinheirodeposit.confirmed, withdrawal.completed, order.paid, order.refunded, subscription.started, subscription.renewed, subscription.canceled
Jogobet.placed, bet.settled, game.round_played, tournament.joined
Usofeature.used, lesson.completed, course.completed, workout.logged, post.created, comment.created, invite.sent
Livrecustom.qualquer_coisa com meta à vontade

Apostas (bets e cassinos)

  • bet.placed com amount = valor apostado; bet.settled com amount = o que o jogador recebeu (0 se perdeu).
  • meta.game_id, meta.game_name, meta.game_provider e meta.game_type (video-slots, live-casino, crash, roulette, table-games, fast-games) filtram missões, torneios e cashback por jogo/categoria. Esporte: meta.kind = "sports".
  • meta.outcome = "lost" no bet.settled marca perda.
  • Cashback é calculado a partir de bet.placed e bet.settled: perda líquida do dia = apostado − recebido.
  • Não mande estornos como aposta: filtre no seu lado.

Idempotência

A chave de repetição é o header Idempotency-Key ou, sem ele, o id do evento. Repetir devolve duplicate: true com os mesmos efeitos — pode reenviar com segurança depois de um timeout.

Lote

bash
curl -X POST https://api.iclubing.com/v1/events/batch \
  -H "Authorization: Bearer $ICLUBING_KEY" -H "Content-Type: application/json" \
  -d '{ "events": [
    { "id": "pf:991:bet", "participant": "user_123", "type": "bet.placed", "amount": 20,
      "meta": { "game_id": "fortune-tiger", "game_type": "video-slots" } },
    { "id": "pf:991:win", "participant": "user_123", "type": "bet.settled", "amount": 0,
      "meta": { "game_id": "fortune-tiger", "outcome": "lost" } }
  ] }'

Até 500 eventos; { "results": [...] } na mesma ordem. Para volume alto, mande Prefer: respond-async e receba 202 { queued: true } na hora.

Efeitos

typeCampos
xp_granted / xp_debitedamount, rule_id
currency_granted / currency_debitedcurrency, amount, rule_id
level_upfrom, to (números)
tier_changedfrom, to (códigos de elo)
mission_progressedmission_id, progress, target
mission_completedmission_id, period
reward_grantedreward_code, rule_id, reward_id, delivery_id (quando o seu sistema precisa creditar)
leaderboard_pointscampaign_id, points, rule_id
badge_granted, taggedbadge_code / tag, rule_id

No Studio, Integrações › Registro lista os últimos eventos recebidos com o ID que você mandou e quantos efeitos cada um teve. Integrações › Eventos envia um evento de teste e mostra o efeito em português.