Supabase REST e RPC — tabelas, linhas e stored procedures.
Nó Supabase
O nó de workflow Supabase (supabase_request) chama as APIs públicas do seu projeto Supabase: PostgREST (CRUD de tabelas), RPC (funções SQL), Auth, Storage e GraphQL. É um nó HTTP pré-configurado com templates de operação para padrões comuns do Supabase.
ID do nó no editor: supabase_request
Variável de URL base: {{supabase_url}} (ex.: https://xxxx.supabase.co)
Variável de API key: {{supabase_key}} (anon ou service role)
O que faz
A cada execução, o engine:
- Resolve
{{supabase_url}},{{supabase_key}}e outras variáveis - Envia a requisição HTTP ao endpoint REST, Auth, Storage ou GraphQL do Supabase
- Retorna status, data e headers
| Propriedade | Valor |
|---|---|
| Rótulo na paleta | Supabase |
| Executor | http_request |
| Headers de auth | apikey + Authorization: Bearer {{supabase_key}} |
| Timeout da requisição | 30 segundos |
Pré-requisitos
- Um projeto Supabase
- URL do projeto e API key em Project Settings → API
- Variáveis de workflow ou integração:
supabase_url— URL do projeto (https://<ref>.supabase.co)supabase_key— chave anon para acesso com RLS no client, ou service_role para bypass admin (somente server-side)
Adicione variáveis em Configurações → Chaves de API ou no painel Variáveis do workflow.
Row Level Security (RLS): com a chave anon, o PostgREST respeita políticas RLS. Com service_role, o RLS é ignorado — use apenas em workflows server-side confiáveis.
Como configurar
Passo 1 — Adicionar o nó
- Abra Automações
- Paleta → Dados → arraste Supabase
- Conecte após gatilho ou nós de preparação de dados
Passo 2 — Escolher um template de operação
| Template | Method | Padrão de endpoint |
|---|---|---|
| Tabela — listar (SELECT) | GET | /rest/v1/table?select=*&limit=50 |
| Tabela — listar ordenado | GET | ...&order=created_at.desc |
| Tabela — filtrar (eq) | GET | ...&id=eq.<uuid> |
| Tabela — inserir linha | POST | /rest/v1/table + body JSON |
| Tabela — inserir várias linhas | POST | Body em array |
| Tabela — upsert (on conflict) | POST | Prefer: resolution=merge-duplicates |
| Tabela — atualizar (PATCH) | PATCH | /rest/v1/table?id=eq.<uuid> |
| Tabela — excluir | DELETE | /rest/v1/table?id=eq.<uuid> |
| RPC — chamar função SQL | POST | /rest/v1/rpc/function_name |
| GraphQL — query | POST | /graphql/v1 |
| Auth — usuário do JWT | GET | /auth/v1/user (precisa JWT do usuário) |
| Auth — admin: listar usuários | GET | /auth/v1/admin/users (service role) |
| Storage — listar objetos | POST | /storage/v1/object/list/bucket |
| Storage — GET objeto público | GET | /storage/v1/object/public/bucket/path |
| Storage — URL assinada | POST | /storage/v1/object/sign/bucket/path |
Substitua nome_tabela, nome_do_bucket e placeholders de UUID pelos nomes reais.
Passo 3 — Configurar URL e headers
Headers padrão (templates injetam automaticamente):
{
"apikey": "{{supabase_key}}",
"Authorization": "Bearer {{supabase_key}}",
"Content-Type": "application/json"
}
Para INSERT/UPDATE quando precisar da linha criada de volta, adicione:
{
"Prefer": "return=representation"
}
Para upsert:
{
"Prefer": "resolution=merge-duplicates,return=representation"
}
Passo 4 — Exemplos de filtros PostgREST
Filtros vão na query string (URL-encoded):
| Filtro | Exemplo |
|---|---|
| Equal | ?status=eq.active |
| Not equal | ?status=neq.archived |
| Greater than | ?amount=gt.100 |
| In list | ?id=in.(uuid1,uuid2) |
| Like | ?name=like.*silva* |
| Select columns | ?select=id,name,created_at |
| Order | ?order=created_at.desc |
| Limit | ?limit=20 |
Exemplo de URL com variáveis:
{{supabase_url}}/rest/v1/orders?select=*&phone=eq.{{trigger.body.phone}}&order=created_at.desc&limit=1
Passo 5 — Usar a saída
{{supabase_1.data}}
{{supabase_1.status}}
O PostgREST retorna um array de linhas no SELECT. Um INSERT com return=representation também retorna array (geralmente um elemento).
Saídas do nó
| Campo de saída | Descrição |
|---|---|
status | HTTP status (200, 201, 204, 4xx, 5xx) |
data | Body JSON — array de linhas, resultado RPC ou objeto de erro |
headers | Headers de resposta |
Dicas e boas práticas
- Prefira chave anon + RLS para fluxos voltados ao cliente; reserve service_role para automações admin internas
- Nunca exponha service_role em código client-side — variáveis de workflow são server-side, o que é correto
- Use RPC para joins ou agregações complexas em vez de encadear vários nós GET
- Upsert com constraint unique nas colunas de conflito definidas no Postgres
- Para lookup de usuário Auth, passe
Authorization: Bearer {{supabase_user_jwt}}com o JWT do usuário, não a chave anon - URLs assinadas do Storage expiram — regenere ao enviar links a clientes
- Combine com Loop para processar cada linha de um SELECT
Exemplos de casos de uso
Sincronizar lead de webhook no Supabase
- Gatilho Webhook — formulário de landing page
- Supabase — POST em
/rest/v1/leadscom name, phone, utm_source - Enviar mensagem — confirmação
Consultar status de pedido para bot de suporte
- Gatilho Agente ou mensagem recebida
- Supabase — GET
/rest/v1/orders?order_number=eq.{{variables.order_number}}&select=status,total - Nó Texto — formatar resposta a partir de
{{supabase_1.data}}
Gerar link de download assinado
- Webhook — usuário solicita PDF da fatura
- Supabase Storage — POST sign URL com
expiresIn: 3600 - Enviar mensagem — link de
{{supabase_1.data.signedURL}}
FAQ
401 ou 403 do PostgREST?
Chave errada, política RLS ausente ou chave anon usada onde service role é necessário. Verifique logs e políticas no Supabase.
Array vazio [] no SELECT?
Nenhuma linha correspondente — não é erro. Use Condição para ramificar entre vazio e não vazio.
PGRST116 — JSON object requested, multiple (or no) rows returned?
Expectativa estilo .single(); adicione limit=1 ou trate o tamanho do array em um nó de Lógica.
Por que usar este nó em vez de HTTP?
Templates incluem headers Supabase corretos, valores Prefer e padrões de URL comuns — setup mais rápido e menos erros.
Posso usar Supabase realtime?
Este nó é somente request/response. Use webhooks ou integração separada para subscriptions realtime.
Referência da API
| Item | Valor |
|---|---|
| ID do tipo de nó | supabase_request |
| Base REST | {{supabase_url}}/rest/v1/ |
| GraphQL | {{supabase_url}}/graphql/v1 |
| Auth | {{supabase_key}} em apikey e Authorization |
| Docs oficiais | Supabase REST, PostgREST filters |
Relacionados
Este artigo foi útil?
Precisa de mais ajuda? Falar com suporte