Documentação da API

Referência da API

Especificação OpenAPI v1.1.0, fixada neste site. Detalhes de autenticação e fluxos estão nos guias.

Operações da API — API pública do BetBackoffice v1.1.0

API pública do BetBackoffice para operadoras que constroem o próprio front-end. Uso **servidor a servidor**: o navegador do jogador nunca chama esta API — o servidor do cliente (BFF) guarda os segredos e assina cada requisição. ## Autenticação (HMAC-SHA256) Toda rota (exceto as públicas de metadados) exige três cabeçalhos: - `X-Operator-Key`: chave da credencial do operador. - `X-Timestamp`: epoch em segundos; tolerância de ±5 minutos. - `X-Signature`: hex de `HMAC_SHA256(secret, string_canonica)`. ```text string_canonica = METODO + "\n" + CAMINHO_COM_QUERY + "\n" + TIMESTAMP + "\n" + SHA256_HEX(CORPO) ``` `CAMINHO_COM_QUERY` é o caminho **exatamente como enviado**, incluindo `/api/v1` e a query string. `CORPO` são os bytes enviados (vazio em GET). ## Idempotência Operações que criam recursos ou movimentam dinheiro exigem `Idempotency-Key` (8–128 caracteres). Repetir a mesma requisição com a mesma chave devolve a resposta original (`Idempotent-Replayed: true`); a mesma chave com corpo diferente retorna `409 IDEMPOTENCY_CONFLICT`. As chaves são lembradas por 24 horas. ## Webhooks Eventos de saída (seção `webhooks` desta especificação) são enviados por `POST` à URL configurada para o seu operador. Cada entrega traz `X-Webhook-Id` (id do evento, use para deduplicar), `X-Webhook-Timestamp` e `X-Webhook-Signature` = hex de `HMAC_SHA256(webhook_secret, TIMESTAMP + "." + CORPO_BRUTO)`. Responda com qualquer `2xx`; outras respostas são retentadas com espera exponencial por até 8 tentativas. Entregas são *at-least-once*: podem repetir. Use `POST /webhooks/test` para validar a integração. ## Convenções - Valores monetários são **strings decimais** com 2 casas (`"100.00"`); a moeda é a do jogador. - Datas em ISO 8601 UTC. - Erros: `{ "error": { "code", "message", "requestId", "details" } }`. O `code` é estável; a `message` pode mudar. - Todas as respostas trazem `X-Request-Id`. - Limite de requisições por operador (padrão 600/min); ao exceder, `429` com `Retry-After`.

  • get /openapi.json — Especificação OpenAPI
  • get /changelog — Changelog da API
  • get /me — Identidade da credencial
  • get /postman.json — Coleção Postman
  • get /signing-snippets.json — Snippets de assinatura
  • get /test-vectors.json — Vetores de teste da assinatura
  • get /docs — Página de documentação
  • get /players — Buscar jogador por externalId
  • post /players — Cadastrar jogador
  • get /players/{playerId} — Consultar jogador
  • get /players/{playerId}/wallet — Saldo do jogador
  • get /players/{playerId}/transactions — Extrato do jogador
  • get /players/{playerId}/kyc — Situação do KYC
  • post /players/{playerId}/kyc/submissions — Registrar envio de documento
  • post /players/{playerId}/deposits — Criar depósito
  • get /deposits/{depositId} — Consultar depósito
  • post /deposits/{depositId}/confirm — Confirmar depósito
  • post /deposits/{depositId}/fail — Marcar depósito como não concretizado
  • post /players/{playerId}/withdrawals — Solicitar saque
  • get /withdrawals/{withdrawalId} — Consultar saque
  • post /withdrawals/{withdrawalId}/cancel — Cancelar saque
  • get /games — Catálogo de jogos
  • post /players/{playerId}/game-sessions — Criar sessão de jogo
  • post /webhooks/test — Enviar webhook de teste
  • post /sandbox/players/{playerId}/kyc/decision — Decidir o KYC (somente sandbox)
  • post /sandbox/withdrawals/{withdrawalId}/decision — Decidir um saque (somente sandbox)

A referência interativa requer JavaScript. Baixar a especificação OpenAPI (JSON).