Date : 24/01/2026 10:45 Status : IMPLEMENTEE Projet : connectors-api Objectif : Transformer connectors-api en hub centralisé
-- Schema dédié
CREATE SCHEMA IF NOT EXISTS connectors;
-- Table config des connecteurs
CREATE TABLE connectors.config (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT NOT NULL UNIQUE,
display_name TEXT,
base_url TEXT NOT NULL,
auth_type TEXT NOT NULL, -- oauth2, api_key, bearer, basic
auth_config JSONB DEFAULT '{}',
swagger_url TEXT,
swagger_spec JSONB,
icon_url TEXT,
description TEXT,
is_builtin BOOLEAN DEFAULT false,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Table tokens/credentials
CREATE TABLE connectors.tokens (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
connector_id UUID REFERENCES connectors.config(id) ON DELETE CASCADE,
user_id UUID,
access_token TEXT,
refresh_token TEXT,
api_key TEXT,
expires_at TIMESTAMPTZ,
scopes TEXT[],
token_metadata JSONB DEFAULT '{}',
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(connector_id, user_id)
);
-- Insérer LinkedIn comme connecteur builtin
INSERT INTO connectors.config (name, display_name, base_url, auth_type, auth_config, is_builtin)
VALUES (
'linkedin',
'LinkedIn',
'https://api.linkedin.com',
'oauth2',
'{
"auth_url": "https://www.linkedin.com/oauth/v2/authorization",
"token_url": "https://www.linkedin.com/oauth/v2/accessToken",
"scopes": ["openid", "profile", "email", "w_member_social"]
}',
true
);
Structure cible :
src/
├── index.ts # Routes principales
├── db/
│ └── supabase.ts # Client Supabase
├── models/
│ ├── connector.ts # Interface Connector
│ └── token.ts # Interface Token
├── services/
│ ├── registry.ts # CRUD connecteurs
│ ├── auth.ts # Gestion OAuth/tokens
│ └── fetch.ts # Proxy fetch
├── connectors/
│ ├── base.ts # Classe abstraite
│ ├── linkedin.ts # LinkedIn (legacy migré)
│ ├── github.ts # GitHub
│ └── generic.ts # REST générique
└── utils/
└── auth-injector.ts # Injection headers auth
Nouveaux endpoints :
GET /api/connectors → Liste tous
GET /api/connectors/:id → Détails + status auth
POST /api/connectors/:id/auth → Initier OAuth ou set API key
GET /api/connectors/:id/callback → Callback OAuth
DEL /api/connectors/:id/auth → Révoquer
POST /api/fetch → Proxy avec auth auto
| Fichier | Action |
|---|---|
| Supabase | CREATE SCHEMA + tables |
| src/index.ts | Nouveaux endpoints |
| src/connectors/linkedin.ts | Adapter au nouveau système |
| src/db/supabase.ts | Nouveau |
| src/services/*.ts | Nouveaux |