Especificação Técnica
Versão: 1.0
Owner: Engenharia SOFIA
Última revisão: 2026
Aplicável a: Dev Integradores, Backend, Infra e Auditoria Técnica
Esta página define o contrato técnico oficial da API da SOFIA. O cumprimento destes padrões é obrigatório para integração estável em produção.
1. Headers Obrigatórios
1.1 Endpoints JSON (API REST)
Obrigatórios
Accept: application/jsonContent-Type: application/json; charset=utf-8(quando houver body)Authorization: Bearer <JWT>(quando o endpoint exigir autenticação)
Compatibilidade
x-supabase-auth: <JWT>(aceito em rotas específicas)
Recomendados
Idempotency-Key: <string>(operações não idempotentes)X-Request-Id: <uuid>(correlação de logs)
Requisições sem Accept ou com Content-Type incorreto podem ser rejeitadas.
2. Webhooks
Quando aplicável, a SOFIA pode enviar webhooks assinados.
Headers esperados:
Content-Type: application/jsonX-SOFIA-Timestamp: <unix_ms>X-SOFIA-Signature: <hmac>Idempotency-Key: <string>
2.1 Validação obrigatória
O integrador deve:
- Validar assinatura HMAC.
- Verificar janela de tempo (anti-replay).
- Implementar deduplicação por
Idempotency-Key.
Falha nessas validações invalida a integração para produção.
Detalhes completos em: Webhook (Recomendado para produção)
3. Códigos HTTP
A API segue semântica HTTP padrão.
3.1 Sucesso (2xx)
200 OK201 Created
3.2 Erro do Cliente (4xx)
400Payload inválido401Token inválido ou ausente403Permissão insuficiente404Recurso inexistente409Conflito de estado422Dados semanticamente inválidos429Rate limit excedido
3.3 Erro do Servidor (5xx)
500Erro interno502Dependência externa falhou504Timeout
4. Política de Retry
| Código | Retry automático | Estratégia |
|---|---|---|
| 429 | Sim | Respeitar Retry-After ou backoff exponencial com jitter |
| 5xx | Sim | Backoff exponencial (limite recomendado: 3–5 tentativas) |
| 4xx | Não | Corrigir requisição |
Retries agressivos podem resultar em bloqueio temporário.
5. Timeout
5.1 Servidor
Rotas críticas podem retornar 504 quando o tempo máximo for excedido.
5.2 Cliente (Recomendado)
- Leitura:
10–15s - Operações compostas:
20–25s - Webhook response:
<= 2s
Processamentos longos devem ser desacoplados via fila/job.
6. Tamanho Máximo de Payload
Requisições
- Recomenda-se manter payloads abaixo de
100KB.
Requests acima desse limite podem ser rejeitados.
Boas práticas:
- Usar paginação
- Evitar arrays extensos
- Filtrar por período/status
Respostas
Sempre utilizar:
limitoffset- filtros por período ou entidade
7. Encoding
UTF-8 é obrigatório.
Header recomendado:
Content-Type: application/json; charset=utf-8Strings devem ser normalizadas antes de:
- Assinar payloads
- Comparar chaves
- Persistir dados críticos
8. Política de Erro
8.1 Formato padrão
{
"success": false,
"error": "Mensagem do erro",
"details": {}
}details é opcional e não deve ser tratado como contrato fixo.
8.2 Compatibilidade
{
"message": "Mensagem do erro",
"error": "Detalhe opcional"
}Clientes devem tratar ambos formatos.
9. Segurança e Boas Práticas
É proibido:
- Expor tokens em frontend
- Logar
Authorization - Logar assinaturas de webhook
- Publicar URLs internas
- Incluir PII em exemplos públicos
Recomendações:
- Usar variáveis de ambiente
- Rotacionar credenciais periodicamente
- Implementar rate limiting no cliente
- Monitorar falhas repetidas de autenticação
10. Estabilidade e Versionamento
- Alterações incompatíveis exigem nova versão de endpoint.
- Mudanças de contrato serão comunicadas previamente.
- Integradores devem evitar depender de campos não documentados.