URL base
endpoint
https://api.superdb.com.br/v1/{projeto}/rest/{tabela}
Autenticação
Toda requisição precisa de 2 headers:
headers
apikey: sua-anon-key
Authorization: Bearer jwt-do-usuario-logado
Dica: RLS é respeitado automaticamente. Usuário só lê o que suas políticas permitem.
SELECT
curl
# Todos os registros
curl https://api.superdb.com.br/v1/meuapp/rest/tasks \
-H "apikey: $ANON_KEY" \
-H "Authorization: Bearer $JWT"
# Filtro: tarefas não concluídas
curl "https://api.superdb.com.br/v1/meuapp/rest/tasks?done=eq.false" \
-H "apikey: $ANON_KEY" -H "Authorization: Bearer $JWT"
# Selecionar colunas
curl "https://api.superdb.com.br/v1/meuapp/rest/tasks?select=id,title" \
-H "apikey: $ANON_KEY" -H "Authorization: Bearer $JWT"
# Ordem + paginação
curl "https://api.superdb.com.br/v1/meuapp/rest/tasks?order=created_at.desc&limit=10" \
-H "apikey: $ANON_KEY" -H "Authorization: Bearer $JWT"
Operadores de filtro
Use no formato ?coluna=op.valor. Operadores principais:
eq— igual:?done=eq.trueneq— diferente:?status=neq.deletedgt,gte,lt,lte— comparações:?age=gt.18like,ilike— pattern matching:?name=ilike.*silva*is— NULL/TRUE:?deleted_at=is.nullin— lista:?status=in.(active,pending)
INSERT
curl
curl -X POST https://api.superdb.com.br/v1/meuapp/rest/tasks \
-H "apikey: $ANON_KEY" -H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d '{"title": "Nova tarefa", "done": false}'
UPDATE
curl
curl -X PATCH "https://api.superdb.com.br/v1/meuapp/rest/tasks?id=eq.UUID" \
-H "apikey: $ANON_KEY" -H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{"done": true}'
DELETE
curl
curl -X DELETE "https://api.superdb.com.br/v1/meuapp/rest/tasks?id=eq.UUID" \
-H "apikey: $ANON_KEY" -H "Authorization: Bearer $JWT"
Joins automáticos
PostgREST detecta foreign keys e permite joins por sintaxe tabela(colunas):
curl
curl "https://api.superdb.com.br/v1/meuapp/rest/tasks?select=*,user:users(name,email)" \
-H "apikey: $ANON_KEY" -H "Authorization: Bearer $JWT"
Preview no Studio
Toda chamada REST roda como SQL embaixo. Você pode espiar no Studio:
GET /tasks?done=eq.false ×
1-- traduzido pelo PostgREST
2select * from proj_meuapp.tasks
3 where done = false
4 and user_id = auth.uid();
Limites
- Máximo de 1.000 registros por request por padrão
- Use
limiteoffsetpra paginar - Use
Rangeheader pra range requests
Dica: Para queries tipadas, use @supabase/supabase-js apontando para https://api.superdb.com.br (sem /rest/v1/) — ele monta as URLs PostgREST automaticamente. @superdb/auth-js e @superdb/supabase-compat são apenas para auth — .from() nesses pacotes retorna not_implemented.
Essa página ajudou?