API Pull (Enterprise)
Versão: 1.0
Owner: Engenharia SOFIA
Última revisão: 2026
Aplicável a: Dev Integradores, Backend Enterprise
O modelo API Pull permite que o parceiro consulte ativamente a API da SOFIA por meio de polling controlado.
É indicado quando o parceiro possui backend próprio, infraestrutura restritiva (firewall) ou necessidade de fluxo determinístico.
1. Quando Utilizar
Utilize API Pull quando:
- Não for possível receber webhooks.
- O ambiente exigir controle total sobre ritmo de consumo.
- A integração rodar via jobs/cron.
- Houver necessidade de backfill controlado.
Não utilize quando:
- For necessária latência mínima.
- O volume de eventos for alto.
- Houver necessidade de atualização sub-segundo.
Nesses casos, prefira WebSocket ou Webhook.
2. Base da API
https://api.v1sofia.com/api3. Endpoints Compatíveis
Sinais
GET /signals/recentGET /signals-history
Roleta
GET /roulette-historyGET /roulette-statusGET /tables-status
Metadados
GET /signal-attributesGET /available-options
Autenticação pode ser exigida dependendo do endpoint.
4. Autenticação
Para endpoints protegidos:
curl "https://api.v1sofia.com/api/signals/recent?limit=20" \
-H "Authorization: Bearer <JWT>"Alternativa:
x-supabase-auth: <JWT>Regras:
- Nunca chamar API diretamente do frontend.
- Nunca logar token.
- Renovar sessão antes de retry após
401.
5. Frequência Recomendada
Produção:
| Endpoint | Frequência |
|---|---|
/signals/recent | 2–5 segundos |
/roulette-status | 10–30 segundos |
/tables-status | 10–30 segundos |
/roulette-history | sob demanda |
/signals-history | sob demanda |
6. Deduplicação
Obrigatório:
- Tratar
iddo sinal como identificador único. - Persistir último
created_at+id. - Ignorar itens já processados.
Não confiar apenas em timestamp.
7. Timeout e Retry
Timeout recomendado
- 5–8 segundos por request.
Retry permitido apenas para:
- Erro de rede
429502503504
Nunca fazer retry automático para:
400401403
8. Estratégia de Fallback
Em caso de indisponibilidade:
- Manter cache local.
- Aplicar backoff exponencial com jitter.
- Realizar backfill com
/roulette-history. - Considerar migração para Webhook ou WebSocket se a carga aumentar.
9. Paginação e Parâmetros
/signals/recent
Parâmetros:
limit(1–1000)table_id(opcional)
Retorno típico:
[
{
"id": "sig_123",
"table_id": "mesa1",
"strategy_name": "default",
"numbers": [],
"confidence": 0.8,
"status": "active",
"created_at": "2026-02-21T13:45:12.123Z"
}
]/roulette-history
Parâmetros obrigatórios:
table_idlimitoffset
/signals-history
Filtros suportados:
strategy_nametable_idstatusconfidence_minconfidence_maxlimit(máx. 100)offset
Retorno:
{
"data": [],
"pagination": {},
"filters": {}
}10. Requisitos para Produção
Para uso enterprise, o parceiro deve:
- Implementar deduplicação persistente.
- Implementar timeout controlado.
- Implementar retry com backoff.
- Monitorar taxa de erro.
- Separar ambientes (sandbox/produção).
- Documentar política de retenção local.
11. Limitações
API Pull:
- Não garante entrega em tempo real.
- Pode sofrer rate limiting.
- Depende da disciplina de polling do parceiro.
- Não substitui webhook para confiabilidade assíncrona.