Ir para o conteúdo

API de Eventos de Apostas

Esta documentação descreve o endpoint para registro de eventos relacionados a apostas, fundamentais para o monitoramento de atividades de jogos e compliance PLD.


Registrar Evento de Aposta

[POST] /betting-events

Registra um novo evento relacionado a atividades de apostas no sistema, com suporte completo para apostas simples e múltiplas.

Parâmetros do corpo

Nome do campo Tipo de dado Obrigatório Descrição
tax_id string Sim CPF do jogador. Exemplo: "012.345.678-90".
event string Sim Tipo do evento. Opções: "new_bet", "result", "cancellation".
last_player_balance number Sim Saldo anterior do jogador em centavos. Exemplo: 20000 para R$ 200,00.
current_player_balance number Sim Saldo atual do jogador em centavos. Exemplo: 25000 para R$ 250,00.
event_date datetime Não Data e hora do evento. Se não informado, usa o momento atual.
bet_slip_id string Sim Identificador único do bilhete de apostas. Exemplo: "slip_abc123def456".
bet_slip_state string Não Estado geral do bilhete. Opções: "open", "settled", "cancelled".
total_stake number Sim Valor total apostado no bilhete em centavos. Exemplo: 5000 para R$ 50,00.
total_odds number Sim Odds combinadas de todo o bilhete. Exemplo: 2.5.
leg_count number Sim Número de seleções no bilhete (1 para simples, >1 para múltiplas).
is_live boolean Não Se é aposta ao vivo. Padrão: false.
is_free_bet boolean Não Se é aposta grátis. Padrão: false.
bonus_amount number Não Valor de bônus utilizado em centavos. Exemplo: 1000 para R$ 10,00.
is_each_way boolean Não Se é aposta each-way. Padrão: false.
bet_legs array Sim Array com detalhes de cada seleção do bilhete.
meta object Não Metadados adicionais sobre o evento (JSON livre).

Estrutura de bet_legs

Cada objeto no array bet_legs deve conter:

Nome do campo Tipo de dado Obrigatório Descrição
leg_id string Sim Identificador único da seleção. Exemplo: "leg_xyz789".
odds number Sim Odds específicas desta seleção. Exemplo: 1.85.
sport_id string Não Identificador do esporte. Exemplo: "66".
sport_name string Não Nome do esporte. Exemplo: "Futebol".
event_id string Não Identificador único do evento. Exemplo: "evt_abc123".
event_name string Não Nome do evento. Exemplo: "Inter de Milão vs. Fluminense".
tournament_id string Não Identificador do torneio. Exemplo: "tourn_copa_libertadores".
tournament_name string Não Nome do torneio. Exemplo: "Copa Libertadores 2024".
market_id string Não Identificador do mercado. Exemplo: "mkt_winner".
market_name string Não Nome do mercado. Exemplo: "Vencedor do encontro".
selection_id string Não Identificador da seleção. Exemplo: "sel_inter_milan".
selection_name string Não Nome da seleção. Exemplo: "Inter de Milão".
event_start_time datetime Não Data/hora real de início do evento. Exemplo: "2024-01-15T20:00:00Z".
event_end_time datetime Não Data/hora real de fim do evento. Exemplo: "2024-01-15T22:00:00Z".
leg_state string Não Estado da seleção. Opções: "open", "won", "lost", "void".
result string Não Resultado da seleção. Opções: "won", "lost", "void", "push".
amount_won number Não Valor ganho desta seleção em centavos (para resultados).

Exemplos de Requisição

Aposta Simples - Nova Aposta

curl --location 'https://aml.paag.io/betting-events' \
--header 'accept: application/json' \
--header 'x-api-key: {{ token }}' \
--header 'Content-Type: application/json' \
--header 'Origin: *' \
--data '{
  "tax_id": "012.345.678-90",
  "event": "new_bet",
  "last_player_balance": 30000,
  "current_player_balance": 25000,
  "event_date": "2024-01-15T15:30:00Z",
  "bet_slip_id": "slip_simple_123",
  "bet_slip_state": "open",
  "total_stake": 5000,
  "total_odds": 2.5,
  "leg_count": 1,
  "is_live": false,
  "is_free_bet": false,
  "bonus_amount": 0,
  "is_each_way": false,
  "bet_legs": [
    {
      "leg_id": "leg_abc123",
      "odds": 2.5,
      "sport_id": "66",
      "sport_name": "Futebol",
      "event_id": "evt_fla_palm_001",
      "event_name": "Flamengo vs. Palmeiras",
      "tournament_id": "tourn_brasileirao_2024",
      "tournament_name": "Campeonato Brasileiro 2024",
      "market_id": "mkt_winner",
      "market_name": "Vencedor do encontro",
      "selection_id": "sel_flamengo",
      "selection_name": "Flamengo",
      "event_start_time": "2024-01-15T21:00:00Z",
      "leg_state": "open"
    }
  ]
}'

Aposta Múltipla - Nova Aposta

curl --location 'https://https://gateway.prd.pppay.cloud/betting-events' \
--header 'accept: application/json' \
--header 'x-api-key: {{ token }}' \
--header 'Content-Type: application/json' \
--header 'Origin: *' \
--data '{
  "tax_id": "012.345.678-90",
  "event": "new_bet",
  "last_player_balance": 50000,
  "current_player_balance": 40000,
  "event_date": "2024-01-15T15:30:00Z",
  "bet_slip_id": "slip_multiple_456",
  "bet_slip_state": "open",
  "total_stake": 10000,
  "total_odds": 6.25,
  "leg_count": 3,
  "is_live": false,
  "is_free_bet": false,
  "bonus_amount": 2000,
  "is_each_way": false,
  "bet_legs": [
    {
      "leg_id": "leg_001",
      "odds": 1.8,
      "sport_name": "Futebol",
      "event_name": "Flamengo vs. Palmeiras",
      "tournament_name": "Campeonato Brasileiro 2024",
      "market_name": "Vencedor do encontro",
      "selection_name": "Flamengo",
      "event_start_time": "2024-01-15T21:00:00Z",
      "leg_state": "open"
    },
    {
      "leg_id": "leg_002",
      "odds": 2.1,
      "sport_name": "Futebol",
      "event_name": "Santos vs. Corinthians",
      "tournament_name": "Campeonato Brasileiro 2024",
      "market_name": "Mais de 2.5 gols",
      "selection_name": "Sim",
      "event_start_time": "2024-01-15T19:00:00Z",
      "leg_state": "open"
    },
    {
      "leg_id": "leg_003",
      "odds": 1.65,
      "sport_name": "Basquete",
      "event_name": "Lakers vs. Warriors",
      "tournament_name": "NBA 2023-24",
      "market_name": "Vencedor do jogo",
      "selection_name": "Lakers",
      "event_start_time": "2024-01-16T02:00:00Z",
      "leg_state": "open"
    }
  ]
}'

Resultado de Aposta Múltipla

curl --location 'https://https://gateway.prd.pppay.cloud/betting-events' \
--header 'accept: application/json' \
--header 'x-api-key: {{ token }}' \
--header 'Content-Type: application/json' \
--header 'Origin: *' \
--data '{
  "tax_id": "012.345.678-90",
  "event": "result",
  "last_player_balance": 40000,
  "current_player_balance": 102500,
  "event_date": "2024-01-16T05:30:00Z",
  "bet_slip_id": "slip_multiple_456",
  "bet_slip_state": "settled",
  "total_stake": 10000,
  "total_odds": 6.25,
  "leg_count": 3,
  "is_live": false,
  "is_free_bet": false,
  "bonus_amount": 2000,
  "is_each_way": false,
  "bet_legs": [
    {
      "leg_id": "leg_001",
      "odds": 1.8,
      "event_name": "Flamengo vs. Palmeiras",
      "selection_name": "Flamengo",
      "leg_state": "won",
      "result": "won",
      "amount_won": 18000
    },
    {
      "leg_id": "leg_002",
      "odds": 2.1,
      "event_name": "Santos vs. Corinthians",
      "selection_name": "Sim",
      "leg_state": "won",
      "result": "won",
      "amount_won": 37800
    },
    {
      "leg_id": "leg_003",
      "odds": 1.65,
      "event_name": "Lakers vs. Warriors",
      "selection_name": "Lakers",
      "leg_state": "won",
      "result": "won",
      "amount_won": 62500
    }
  ]
}'

Respostas

200 - Criado com sucesso
{
  "id": "evt_xyz789abc123"
}
400 - Dados inválidos
{
  "error": {
    "message": "Dados de entrada inválidos",
    "details": {
      "tax_id": ["CPF deve estar no formato válido"],
      "total_stake": ["Valor da aposta deve ser maior que zero"],
      "total_odds": ["Odds deve ser um número positivo"],
      "bet_legs": ["Deve conter pelo menos uma seleção"]
    },
    "status": 400
  }
}