Conector Supabase
Starea conectorului: Planificat Încă neconstruit. Tajo nu rulează astăzi acest conector.
Ilustrație · date de exemplu
Exemplu de sincronizare
Sursă
Supabase
Starea conectorului: Planificat
Destinație
Celălalt instrument al tău
Starea conectorului: Instrument personalizat
Maparea câmpurilor
| Câmp sursă | Câmp destinație | Valoare exemplu |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Ciornă
- Verifică o înregistrare
- Aprobă această versiune
Stările se referă la fiecare conector și nu garantează că această sincronizare este pregătită. Câmpurile sunt ilustrative. Verifică schema și permisiunile reale înainte de sincronizare.
Conectați proiectul Supabase pentru a sincroniza înregistrările din baza de date, datele de autentificare a utilizatorilor, evenimentele de stocare a fișierelor și modificările în timp real pentru automatizarea implicării clienților.
Prezentare generală
| Proprietate | Valoare |
|---|---|
| Platformă | Supabase |
| Categorie | Bază de date și Backend |
| Complexitate configurare | Ușoară |
| Integrare oficială | Nu |
| Date sincronizate | Utilizatori, Tabele, Stocare, Evenimente |
| Skilluri disponibile | 11 |
| Tip API | REST (PostgREST) + WebSocket în timp real |
| Documentație oficială | supabase.com/docs |
Funcționalități
- REST API auto-generat - Operații CRUD pe orice tabelă Postgres prin PostgREST, fără cod necesar
- Sincronizare utilizatori Auth - Sincronizați utilizatorii Supabase Auth (email, telefon, conectări sociale) cu platforma de implicare
- Abonamente în timp real - Ascultați evenimentele INSERT, UPDATE, DELETE pe orice tabelă în timp real
- Securitate la nivel de rând - Toate accesele API respectă politicile RLS Postgres pentru date multi-tenant securizate
- Integrare stocare - Urmăriți încărcările de fișiere și gestionați resursele în bucket-uri Storage
- Funcții Edge - Invocați funcții Deno serverless pentru logică personalizată și webhook-uri
- Căutare full-text - Valorificați capacitățile de căutare full-text Postgres prin API
Cerințe preliminare
Înainte de a începe, asigurați-vă că aveți:
- Un proiect Supabase (app.supabase.com)
- URL-ul API și cheile API ale proiectului (găsite în Settings → API)
- Un cont Tajo cu acces API
Chei API
Supabase oferă două chei: anon (publică, respectă RLS) și service_role (ocolește RLS, acces admin). Utilizați service_role pentru integrările server-side și anon pentru cele client-side.
Autentificare
Supabase utilizează autentificarea cu cheie API. Fiecare cerere necesită antetul apikey și opțional un token Bearer Authorization pentru acces cu scope de utilizator.
# Using anon key (respects RLS)curl 'https://<project_ref>.supabase.co/rest/v1/customers' \ -H "apikey: <SUPABASE_ANON_KEY>" \ -H "Authorization: Bearer <SUPABASE_ANON_KEY>"
# Using service_role key (bypasses RLS)curl 'https://<project_ref>.supabase.co/rest/v1/customers' \ -H "apikey: <SUPABASE_SERVICE_ROLE_KEY>" \ -H "Authorization: Bearer <SUPABASE_SERVICE_ROLE_KEY>"Configurare
Configurare de bază
connectors: supabase: enabled: true project_url: "https://xyzcompany.supabase.co" api_key: "${SUPABASE_SERVICE_ROLE_KEY}"
# Data sync options sync: users: true tables: - customers - orders - products storage: true realtime: true
# Map Supabase Auth users to contacts user_mapping: email: email phone: SMS user_metadata.full_name: FIRSTNAME created_at: SIGNUP_DATEMapare câmpuri
Mapați coloanele tabelelor Supabase la atributele platformei de implicare:
Mapări implicite utilizatori
| Parameter | Type | Description |
|---|---|---|
email required | string | E-mailul utilizatorului din Supabase Auth (identificator unic) |
phone optional | string | Numărul de telefon pentru implicare prin SMS/WhatsApp |
user_metadata.full_name optional | string | Numele de afișare din metadatele utilizatorului Auth |
user_metadata.avatar_url optional | string | URL-ul imaginii de profil |
created_at optional | timestamp | Marca temporală a creării contului |
last_sign_in_at optional | timestamp | Cea mai recentă autentificare pentru scorarea implicării |
app_metadata.provider optional | string | Furnizorul de autentificare (email, google, github, etc.) |
confirmed_at optional | timestamp | Marca temporală a confirmării e-mailului |
Mapare tabelă personalizată
table_mapping: customers: # Column → Attribute mapping email: email full_name: FIRSTNAME company: COMPANY plan: SUBSCRIPTION_PLAN mrr: MONTHLY_REVENUE created_at: SIGNUP_DATE
orders: # Track as events sync_as: events event_name: "order_placed" properties: total: amount status: order_status items: line_itemsPuncte finale API
REST API Supabase este auto-generat din schema bazei de date la https://<ref>.supabase.co/rest/v1/.
| Punct final | Metodă | Descriere |
|---|---|---|
/rest/v1/{table} | GET | Interogați rânduri cu filtrare, ordonare, paginare |
/rest/v1/{table} | POST | Inserați rânduri (suportă bulk și upsert) |
/rest/v1/{table} | PATCH | Actualizați rânduri care corespund filtrelor |
/rest/v1/{table} | DELETE | Ștergeți rânduri care corespund filtrelor |
/rest/v1/rpc/{function} | POST | Apelați o funcție Postgres |
/auth/v1/signup | POST | Creați un utilizator nou |
/auth/v1/token?grant_type=password | POST | Autentificare cu parolă |
/auth/v1/user | GET | Obțineți utilizatorul curent |
/auth/v1/admin/users | GET | Listați toți utilizatorii (service_role) |
/storage/v1/object/{bucket}/{path} | POST | Încărcați fișier |
/storage/v1/object/list/{bucket} | POST | Listați fișierele din bucket |
/functions/v1/{function_name} | POST | Invocați o funcție Edge |
Operatori de filtrare
| Operator | Descriere | Exemplu |
|---|---|---|
eq | Egal | ?status=eq.active |
neq | Diferit | ?status=neq.deleted |
gt, gte | Mai mare decât | ?amount=gt.100 |
lt, lte | Mai mic decât | ?created_at=lt.2024-01-01 |
like, ilike | Potrivire șablon | ?name=ilike.%john% |
in | În tablou | ?status=in.(active,trial) |
is | Verificare null | ?deleted_at=is.null |
Evenimente
Evenimente Auth
| Eveniment | Declanșator | Caz de utilizare |
|---|---|---|
user.signed_up | Înregistrare utilizator nou | Serie de bun venit |
user.signed_in | Autentificare utilizator | Urmărire activitate |
user.updated | Modificări profil | Sincronizare date |
user.deleted | Ștergere cont | Fluxuri de lucru de curățare |
Evenimente bază de date (Timp real)
| Eveniment | Declanșator | Caz de utilizare |
|---|---|---|
INSERT | Rând nou adăugat | Notificări comandă/client nou |
UPDATE | Rând modificat | Fluxuri de lucru de modificare status |
DELETE | Rând eliminat | Detectare churn |
Evenimente Webhook
| Eveniment | Declanșator | Caz de utilizare |
|---|---|---|
auth.user.created | Înregistrare utilizator prin webhook | Declanșare onboarding |
storage.object.created | Fișier încărcat | Procesare resurse |
Exemple de cod
Inițializare conector
import { TajoClient } from '@tajo/sdk';import { createClient } from '@supabase/supabase-js';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY,});
// Connect Supabase projectawait tajo.connectors.connect('supabase', { projectUrl: process.env.SUPABASE_URL, serviceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY,});Sincronizare utilizatori ca contacte
// Sync all Supabase Auth users as contactsawait tajo.connectors.sync('supabase', { type: 'full', resources: ['users'],});
// Incremental sync (new/changed users only)await tajo.connectors.sync('supabase', { type: 'incremental', resources: ['users'], since: '2024-01-01T00:00:00Z',});Ascultare modificări în timp real
// Subscribe to new orders for engagement triggersconst supabase = createClient( process.env.SUPABASE_URL, process.env.SUPABASE_SERVICE_ROLE_KEY);
supabase .channel('orders') .on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'orders' }, async (payload) => { // Forward to Tajo as an event await tajo.events.track({ email: payload.new.customer_email, event: 'order_placed', properties: { order_id: payload.new.id, total: payload.new.total, items: payload.new.line_items, }, }); } ) .subscribe();Interogare și segmentare
// Query customers by plan for targeted campaignsconst { data: proUsers } = await supabase .from('customers') .select('email, full_name, plan, mrr') .eq('plan', 'pro') .gt('mrr', 100) .order('mrr', { ascending: false });
// Sync to a Brevo list for campaign targetingawait tajo.lists.addContacts(PRO_LIST_ID, proUsers);Limite de rată
Limite de rată API
Limitele de rată Supabase depind de planul dvs. Nivel gratuit: 500 cereri/minut. Pro: 1.000 cereri/secundă. Contactați Supabase pentru limitele Enterprise.
| Plan | Limită de rată | Conexiuni în timp real |
|---|---|---|
| Gratuit | 500 cereri/min | 200 concurente |
| Pro | 1.000 cereri/sec | 500 concurente |
| Team | 2.000 cereri/sec | 1.000 concurente |
| Enterprise | Personalizat | Personalizat |
Depanare
Probleme frecvente
| Problemă | Cauză | Soluție |
|---|---|---|
| 401 Neautorizat | Cheie API invalidă sau expirată | Verificați cheile API în Supabase Dashboard → Settings → API |
| 403 Interzis | Politică RLS blochează accesul | Utilizați cheia service_role pentru operații admin sau verificați politicile RLS |
| Niciun eveniment în timp real | Realtime neactivat pentru tabelă | Activați în Database → Replication → adăugați tabela la publicație |
| Rezultate interogare goale | RLS filtrează toate rândurile | Verificați că politicile RLS permit rolului autentificat să citească |
| Încărcare stocare eșuată | Politici bucket | Verificați că bucket-ul Storage este public sau are politici RLS corecte |
Modul de depanare
connectors: supabase: debug: true log_level: verbose log_queries: true log_realtime: trueTestare conexiune
tajo connectors test supabase# ✓ API connection successful# ✓ Auth endpoint accessible# ✓ Tables readable (12 tables found)# ✓ Storage accessible (3 buckets)# ✓ Realtime connection established# ✓ Edge Functions available (4 functions)Bune practici
- Utilizați cheia service_role doar server-side - Nu o expuneți niciodată în codul client
- Activați RLS pe toate tabelele - Chiar și cu service_role, proiectați cu RLS pentru apărare în profunzime
- Utilizați Realtime pentru sincronizare bazată pe evenimente - Mai eficient decât polling-ul pentru modificări
- Grupați operațiile - Utilizați inserții bulk și filtrul
inpentru operații cu volum mare - Mapați metadatele utilizatorului - Stocați câmpurile relevante pentru implicare în
user_metadatala înregistrare - Utilizați Funcții Edge pentru webhook-uri - Procesați webhook-urile primite cu Supabase Edge Functions pentru gestionare cu latență redusă
Securitate
- Autentificare cu cheie API - Toate cererile necesită chei API valide
- Securitate la nivel de rând (RLS) - Control acces nativ Postgres per rând
- Verificare JWT - Token-urile de autentificare sunt JWT-uri semnate verificate la fiecare cerere
- SSL/TLS - Toate conexiunile criptate în tranzit
- SOC 2 Tip II - Supabase este conform SOC 2
- Restricții de rețea - Allowlisting IP opțional pe planurile plătite