Skip to content

API Reference

A API do ProCases segue os principios REST e esta documentada usando OpenAPI 3.1 (Scalar).

Base URL

Producao: https://api.procases.example/api
Desenvolvimento: http://localhost:3000/api

Documentacao Interativa

  • Scalar UI: /api/docs
  • OpenAPI JSON: /api/docs-json

Autenticacao

A API usa autenticacao baseada em sessoes. O sessionId e enviado via cookie.

http
Cookie: sessionId=abc123...

Headers Padrao

http
Content-Type: application/json
Accept: application/json

Respostas

Sucesso

json
{
  "data": { ... },
  "meta": {
    "page": 1,
    "limit": 20,
    "total": 100
  }
}

Erro

json
{
  "statusCode": 400,
  "message": "Validation failed",
  "errors": [
    {
      "field": "amountCents",
      "message": "must be a positive number"
    }
  ]
}

Codigos de Status

CodigoSignificado
200OK
201Created
400Bad Request
401Unauthorized
403Forbidden
404Not Found
409Conflict
422Unprocessable Entity
429Too Many Requests
500Internal Server Error

Rate Limiting

TipoLimiteJanela
Global100 req1 min
Auth endpoints10 req1 min
Case open5 req1 min

Headers de rate limit:

http
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1705312800

Endpoints por Modulo

Autenticacao (/auth)

MetodoEndpointDescricaoAuth
GET/auth/steam/loginIniciar login SteamPublico
GET/auth/steam/callbackCallback Steam OAuthPublico
GET/auth/meDados do usuario logadoRequer
POST/auth/logoutLogout da sessao atualRequer
POST/auth/logout-allLogout de todas as sessoesRequer
GET/auth/sessionsListar sessoes ativasRequer
DELETE/auth/sessions/:sessionIdRevogar sessao especificaRequer

Usuarios (/user)

MetodoEndpointDescricaoAuth
GET/user/profilePerfil do usuarioRequer
GET/user/statsEstatisticas do usuarioRequer
GET/user/balanceSaldo do usuarioRequer
PATCH/user/trade-urlAtualizar trade URL SteamRequer

Caixas (/cases)

MetodoEndpointDescricaoAuth
GET/casesListar todas as caixasPublico
GET/cases/categoriesListar categoriasPublico
GET/cases/:idDetalhes da caixaPublico
GET/cases/:id/itemsItens de uma caixaPublico
GET/cases/:id/probabilitiesProbabilidades de dropPublico

Abertura de Caixas (/cases)

MetodoEndpointDescricaoAuth
POST/cases/:id/openAbrir caixa (single ou multi)Requer
GET/cases/openingsHistorico de aberturas do usuarioRequer
POST/cases/openings/:id/verifyVerificar provably fairRequer
GET/cases/openings/recentDrops recentes (live drops)Publico

Batalhas (/battles)

MetodoEndpointDescricaoAuth
GET/battles/listListar batalhas (paginado)Publico
POST/battles/createCriar nova batalhaRequer
POST/battles/:id/joinEntrar em batalhaRequer
GET/battles/activeBatalhas ativas do usuarioRequer
GET/battles/:idDetalhes da batalhaRequer
POST/battles/:id/add-botsAdicionar bots e iniciarRequer

Upgrade (/upgrade)

MetodoEndpointDescricaoAuth
GET/upgrade/targetsItens disponiveis para upgradePublico
POST/upgrade/calculateCalcular chance de sucessoRequer
POST/upgrade/performExecutar upgradeRequer
GET/upgrade/historyHistorico de upgradesRequer
POST/upgrade/:id/verifyVerificar provably fairRequer

Swap (/swap)

MetodoEndpointDescricaoAuth
GET/swap/targetsItens disponiveis para swap (Waxpeer)Publico
POST/swapCriar oferta de swapRequer
PUT/swap/:id/acceptAceitar ofertaRequer
PUT/swap/:id/cancelCancelar oferta propriaRequer
PUT/swap/:id/declineRecusar ofertaRequer
GET/swap/my-swapsMinhas ofertas (criadas/recebidas)Requer
GET/swap/publicOfertas publicasRequer
POST/swap/siteSwap por item Waxpeer (site swap)Requer

Sorteios (/raffle)

MetodoEndpointDescricaoAuth
GET/raffle/activeListar sorteios ativosPublico
GET/raffle/completedListar sorteios finalizadosPublico
GET/raffle/:idDetalhes do sorteioPublico
POST/raffle/:id/buyComprar ticketsRequer
POST/raffle/:id/drawSortear vencedor (Admin)Admin

Inventario (/inventory)

MetodoEndpointDescricaoAuth
GET/inventoryListar itens do inventarioRequer
DELETE/inventory/:id/sellVender itemRequer
POST/inventory/sell-multipleVender multiplos itensRequer
POST/inventory/sell-allVender todos os itensRequer
POST/inventory/:id/withdrawSolicitar saque de skin (Waxpeer)Requer
GET/inventory/withdrawals/activeSaques de skin ativosRequer
POST/inventory/withdrawals/:id/refreshAtualizar status do saqueRequer
GET/inventory/withdrawals/historyHistorico de saques de skinRequer

Pagamentos (/payment)

MetodoEndpointDescricaoAuth
POST/payment/deposit/initiateIniciar depositoRequer
POST/payment/deposit/webhook/:providerWebhook de confirmacaoPublico
GET/payment/depositsHistorico de depositosRequer
POST/payment/withdraw/requestSolicitar saque BRLRequer
POST/payment/withdraw/:id/confirmConfirmar saque com 2FARequer
GET/payment/withdrawalsHistorico de saques BRLRequer
GET/payment/transactionsHistorico de transacoesRequer
POST/payment/2fa/setupGerar secret e QR code 2FARequer
POST/payment/2fa/enableAtivar 2FARequer
POST/payment/2fa/disableDesativar 2FARequer
POST/payment/2fa/verifyVerificar token 2FARequer

Evento / Passe (/event)

MetodoEndpointDescricaoAuth
GET/event/activeEventos ativosPublico
GET/event/:id/progressProgresso do usuario no eventoRequer
POST/event/:id/claimResgatar recompensa de nivelRequer

Event Shoot (/event-shoot)

MetodoEndpointDescricaoAuth
POST/event-shoot/shootAtirar em caixa do evento (250-5000 tickets)Requer

Live Drops (/live-drops)

MetodoEndpointDescricaoAuth
GET/live-drops/recentDrops recentes globaisPublico
GET/live-drops/topTop drops (chance <= 2%)Publico

Provably Fair (/provably-fair)

MetodoEndpointDescricaoAuth
POST/provably-fair/generate-seedsGerar seedsPublico
POST/provably-fair/verify-seedVerificar hash do server seedPublico
POST/provably-fair/calculate-resultCalcular resultadoPublico
POST/provably-fair/verify-resultVerificar resultadoPublico

Notificacoes (/notifications)

MetodoEndpointDescricaoAuth
GET/notificationsListar notificacoesRequer
GET/notifications/unread-countContagem de nao lidasRequer
POST/notifications/:id/readMarcar como lidaRequer
POST/notifications/read-allMarcar todas como lidasRequer

Auditoria (/audit)

MetodoEndpointDescricaoAuth
GET/audit/my-logsLogs do usuario atualRequer
GET/audit/verify-chainVerificar integridade da chainAdmin
GET/audit/entity/:type/:idLogs de uma entidadeAdmin

Itens Publicos (/items)

MetodoEndpointDescricaoAuth
GET/itemsListar itens Waxpeer (20% margem)Publico
GET/items/categoriesCategorias de armasPublico
GET/items/raritiesRaridades disponiveisPublico
GET/items/cheapItens baratos ($0 - $0.50)Publico
GET/items/statsEstatisticas de itensPublico
GET/items/exchange-rateTaxa USD/BRL atualPublico
POST/items/syncSincronizar itens do WaxpeerAdmin

Admin (/admin)

Todos os endpoints admin requerem AdminGuard.

Dashboard

MetodoEndpointDescricao
GET/admin/dashboard/statsEstatisticas gerais
GET/admin/dashboard/revenue-chartGrafico de receita
GET/admin/dashboard/overviewOverview com GGR
GET/admin/dashboard/recent-activityAtividade recente

Usuarios

MetodoEndpointDescricao
GET/admin/usersListar usuarios (filtros)
GET/admin/users/:idDetalhes do usuario
PUT/admin/users/:id/statusAtualizar status
POST/admin/users/:id/balanceAjustar saldo
POST/admin/users/:id/banBanir usuario
POST/admin/users/:id/unbanDesbanir usuario
GET/admin/users/:userId/case-openingsAberturas do usuario
GET/admin/users/:userId/battlesBatalhas do usuario
GET/admin/users/:userId/transactionsTransacoes do usuario

Caixas

MetodoEndpointDescricao
GET/admin/casesListar caixas (filtros)
GET/admin/cases/:idCaixa com itens
POST/admin/casesCriar caixa
PATCH/admin/cases/:idAtualizar caixa
DELETE/admin/cases/:idDeletar caixa
POST/admin/cases/:caseId/itemsAdicionar item a caixa
DELETE/admin/cases/:caseId/items/:itemIdRemover item da caixa

Itens

MetodoEndpointDescricao
GET/admin/itemsListar itens (filtros)
GET/admin/items/:idDetalhes do item
POST/admin/itemsCriar item
PATCH/admin/items/:idAtualizar item
DELETE/admin/items/:idDeletar item

Batalhas

MetodoEndpointDescricao
GET/admin/battlesListar batalhas (filtros)
GET/admin/battles/:idDetalhes da batalha
POST/admin/battles/:id/cancelCancelar e reembolsar

Depositos

MetodoEndpointDescricao
GET/admin/depositsListar depositos (filtros)
POST/admin/deposits/:id/confirmConfirmar deposito
POST/admin/deposits/:id/rejectRejeitar deposito

Saques

MetodoEndpointDescricao
GET/admin/withdrawalsListar saques (filtros)
POST/admin/withdrawals/:id/approveAprovar saque
POST/admin/withdrawals/:id/rejectRejeitar e reembolsar
POST/admin/withdrawals/:id/completeMarcar como concluido

Transacoes

MetodoEndpointDescricao
GET/admin/transactionsListar transacoes (filtros)

Analytics

MetodoEndpointDescricao
GET/admin/analytics/rtp-by-caseRTP por caixa
GET/admin/analytics/battle-rtpRTP de batalhas
GET/admin/analytics/upgrade-statsEstatisticas de upgrades
GET/admin/analytics/bot-profitabilityLucratividade dos bots
GET/admin/analytics/user-statsAquisicao/retencao
GET/admin/analytics/financial-overviewOverview financeiro
GET/admin/analytics/ggrGGR com breakdown
GET/admin/analytics/ggr-by-userGGR por usuario

Integracao de Itens - Admin (/admin/items)

MetodoEndpointDescricaoAuth
POST/admin/items/sync-steam-databaseSincronizar itens do Steam DatabaseAdmin
POST/admin/items/update-pricesAtualizar precos via WaxpeerAdmin
GET/admin/items/itemsListar itens Waxpeer (raw)Admin
GET/admin/items/steam-database/itemsListar itens Steam DatabaseAdmin
GET/admin/items/steam-database/collectionsListar colecoesAdmin
POST/admin/items/steam-database/clear-cacheLimpar cacheAdmin
GET/admin/items/weapon-categoriesMapeamento de categoriasAdmin

Health (/health)

MetodoEndpointDescricaoAuth
GET/healthHealth checkPublico
GET/health/readyReadiness checkPublico
GET/health/liveLiveness checkPublico

Exemplo - Abrir Caixa

bash
curl -X POST https://api.procases.example/api/cases/123/open \
  -H "Cookie: sessionId=abc123" \
  -H "Content-Type: application/json"

Response:

json
{
  "openingId": "789012345678901234",
  "item": {
    "id": "456",
    "name": "AWP | Dragon Lore",
    "rarity": "EXTRAORDINARY",
    "valueCentsBrl": 70765,
    "imageUrl": "https://..."
  },
  "roll": 9845230,
  "serverSeedHash": "abc123...",
  "isFlip": false
}

Exemplo - Sacar Skin via Inventario

bash
curl -X POST https://api.procases.example/api/inventory/456/withdraw \
  -H "Cookie: sessionId=abc123" \
  -H "Content-Type: application/json"

Response:

json
{
  "withdrawalId": "wd123456789",
  "itemName": "AWP | Dragon Lore",
  "status": "PENDING",
  "provider": "WAXPEER",
  "requestedAt": "2024-01-15T10:30:00Z"
}

Documentação Técnica - ProCases