Skip to content

API Reference

A API do CSGOFlip segue os princípios REST e está documentada usando OpenAPI 3.1 (Scalar).

Base URL

Produção: https://api.csgoflip.com/api
Desenvolvimento: http://localhost:3000/api

Documentação Interativa

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

Autenticação

A API usa autenticação baseada em sessões. O sessionId é enviado via cookie ou header.

http
Cookie: sessionId=abc123...

Via Header

http
Authorization: Bearer abc123...

Headers Padrão

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"
    }
  ]
}

Códigos de Status

CódigoSignificado
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
Withdrawal3 req1 min

Headers de rate limit:

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

Endpoints por Módulo

Autenticação

MétodoEndpointDescrição
GET/auth/steam/loginIniciar login Steam
GET/auth/steam/callbackCallback Steam OAuth
POST/auth/logoutLogout
GET/auth/meDados do usuário logado

Caixas

MétodoEndpointDescrição
GET/casesListar caixas
GET/cases/:idDetalhes da caixa
POST/cases/:id/openAbrir caixa
GET/cases/openingsHistórico de aberturas

Batalhas

MétodoEndpointDescrição
GET/battlesListar batalhas
GET/battles/:idDetalhes da batalha
POST/battlesCriar batalha
POST/battles/:id/joinEntrar na batalha
POST/battles/:id/leaveSair da batalha

Pagamentos

MétodoEndpointDescrição
POST/deposits/initiateIniciar depósito
GET/depositsHistórico de depósitos
POST/withdrawals/requestSolicitar saque
GET/withdrawalsHistórico de saques
POST/withdrawals/:id/cancelCancelar saque

Inventário

MétodoEndpointDescrição
GET/inventoryListar itens
POST/inventory/:id/sellVender item
POST/inventory/sell-allVender todos

Upgrades

MétodoEndpointDescrição
GET/upgrades/probabilityCalcular probabilidade
POST/upgradesExecutar upgrade
GET/upgrades/historyHistórico

Sorteios

MétodoEndpointDescrição
GET/rafflesListar sorteios
GET/raffles/:idDetalhes
POST/raffles/:id/ticketsComprar tickets

Live Drops

MétodoEndpointDescrição
GET/live-drops/recentDrops recentes
POST/live-drops/emitEmitir drop

Provably Fair

MétodoEndpointDescrição
GET/provably-fair/client-seedObter client seed
PUT/provably-fair/client-seedAtualizar client seed
GET/provably-fair/verify/:idVerificar resultado

Admin

MétodoEndpointDescrição
GET/admin/dashboardEstatísticas
GET/admin/usersListar usuários
POST/admin/users/:id/banBanir usuário
GET/admin/withdrawalsFila de saques
POST/admin/withdrawals/:id/approveAprovar saque

Exemplos

Abrir Caixa

bash
curl -X POST https://api.csgoflip.com/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",
    "valueCents": 250000,
    "imageUrl": "https://..."
  },
  "roll": 45230,
  "serverSeedHash": "abc123...",
  "isFlip": false
}

Solicitar Saque

bash
curl -X POST https://api.csgoflip.com/api/withdrawals/request \
  -H "Cookie: sessionId=abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "amountCents": 10000,
    "paymentMethod": "PIX",
    "paymentDetails": {
      "pixKey": "email@example.com",
      "pixKeyType": "EMAIL"
    },
    "twoFactorCode": "123456"
  }'

Response:

json
{
  "id": "wd123456789",
  "amountCents": 10000,
  "status": "PENDING",
  "requestedAt": "2024-01-15T10:30:00Z"
}

SDKs

JavaScript/TypeScript

typescript
import { CSGOFlipClient } from '@csgoflip/sdk';

const client = new CSGOFlipClient({
  baseUrl: 'https://api.csgoflip.com',
  sessionId: 'abc123...',
});

// Abrir caixa
const result = await client.cases.open('123');

// Listar inventário
const inventory = await client.inventory.list();

// Solicitar saque
const withdrawal = await client.withdrawals.request({
  amountCents: 10000,
  paymentMethod: 'PIX',
  paymentDetails: { pixKey: 'email@example.com' },
});

Webhooks

Para integrações, a API pode enviar webhooks para eventos:

  • deposit.confirmed
  • withdrawal.completed
  • battle.finished

Configuração

bash
curl -X POST https://api.csgoflip.com/api/webhooks \
  -H "Authorization: Bearer {adminToken}" \
  -d '{
    "url": "https://yoursite.com/webhook",
    "events": ["deposit.confirmed", "withdrawal.completed"],
    "secret": "your-webhook-secret"
  }'

Payload

json
{
  "event": "deposit.confirmed",
  "timestamp": "2024-01-15T10:30:00Z",
  "data": {
    "depositId": "123",
    "userId": "456",
    "amountCents": 10000
  },
  "signature": "sha256=..."
}

Verificação

typescript
const isValid = verifyWebhookSignature(
  payload,
  headers['x-webhook-signature'],
  secret,
);

Documentação Técnica CSGOFlip