Référence API

Gérez vos bases de données PostgreSQL, branches, computes, et plus via REST. URL de base : https://api-test.lampion.cloud/v1/

Chaque requête nécessite :

Authorization: Bearer lmp_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Créez une clé dans Paramètres > Clés API.

CLI lampion projects list MCP Agents IA (Claude, Cursor)

Général

Authentification

Toutes les requêtes API nécessitent un token Bearer. Créez une clé API depuis Paramètres > Clés API dans la console. Les clés sont scopées à votre organisation avec les permissions developer. Elles expirent après 90 jours par défaut. Hiérarchie des rôles RBAC : analyst < viewer < developer < admin/owner. Les analysts n'ont accès qu'aux branches où l'anonymisation est activée et reçoivent une connection string dédiée avec des données masquées.

Projets

Un projet est une base de données PostgreSQL avec branching, monitoring et auto-suspend. Créer un projet provisionne un compute et retourne une connection string prête à l'emploi.

GET /v1/projects

Lister tous les projets.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects

Réponse

[{"id":"abc123","name":"my-app","region":"fr-par-1"}]
POST /v1/projects

Créer un projet. Retourne la connection string, l'endpoint et le mot de passe.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"name":"my-app","region":"fr-par-1"}' https://api-test.lampion.cloud/v1/projects

Réponse

{"id":"abc123","name":"my-app","endpoint_id":"ep-abc",
 "connection_string":"postgresql://cloud_admin:xxx@db-test.lampion.cloud:5432/ep-abc.postgres?sslmode=require",
 "pg_password":"YaQYfbg...","host":"db-test.lampion.cloud","port":5432}
GET /v1/projects/{project_id}

Récupérer un projet par ID.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}

Réponse

{"id":"abc123","name":"my-app","region":"fr-par-1"}
PATCH /v1/projects/{project_id}

Mettre à jour un projet (renommer, modifier les paramètres).

Requête

curl -X PATCH -H "Authorization: Bearer $TOKEN" -d '{"name":"my-new-name"}' https://api-test.lampion.cloud/v1/projects/{id}

Réponse

{"id":"abc123","name":"my-new-name","region":"fr-par-1"}
DELETE /v1/projects/{project_id}

Supprimer un projet et toutes ses données. Irréversible.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}

Réponse

204 No Content

Branches

Forks en copy-on-write. Créées en moins d'une seconde pour les tests, le staging, ou la CI. Les scripts seed s'exécutent automatiquement sur les nouvelles branches.

GET /v1/projects/{id}/branches

Lister toutes les branches.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches

Réponse

[{"id":"tid","name":"main","is_primary":true},{"id":"feat","name":"staging"}]
POST /v1/projects/{id}/branches

Créer une branch (fork). Provisionne un nouveau compute.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"name":"staging","parent_id":"main-tid"}' https://api-test.lampion.cloud/v1/projects/{id}/branches

Réponse

{"id":"new-tid","name":"staging","compute_id":"ep-new","pg_port":55436}
PATCH /v1/projects/{id}/branches/{bid}

Mettre à jour les paramètres d'une branch (TTL de suppression automatique, statut protected).

Requête

curl -X PATCH -H "Authorization: Bearer $TOKEN" -d '{"ttl_hours":24,"protected":true}' https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}

Réponse

{"id":"feat","name":"staging","ttl_hours":24,"protected":true}
POST .../{bid}/reset

Réinitialiser une branch à l'état actuel de son parent (comme git reset --hard). Recrée le compute.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/reset

Réponse

{"id":"feat","name":"staging","compute_id":"ep-new2","status":"running"}
POST .../{bid}/merge

Fusionner les changements de schéma (DDL uniquement) de cette branch vers son parent. Utilisez dry_run=true pour prévisualiser le SQL.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"dry_run":true}' https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/merge

Réponse

{"dry_run":true,"sql":"ALTER TABLE users ADD COLUMN avatar TEXT;","changes":1}
DELETE /v1/projects/{id}/branches/{bid}

Supprimer une branch et son compute.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}

Réponse

204 No Content

Endpoints (Computes)

Instances compute PostgreSQL. Suspendez/reprenez, configurez l'auto-suspend, gérez les listes d'autorisation IP.

GET /v1/projects/{id}/endpoints/{eid}

Récupérer un endpoint par ID (statut, connection string, paramètres).

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}

Réponse

{"id":"ep-abc","status":"running","connection_string":"postgresql://...","auto_suspend_seconds":300,"compute_cu":0.25}
GET /v1/projects/{id}/endpoints

Lister les endpoints avec leurs connection strings et mots de passe.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints

Réponse

[{"id":"ep-abc","status":"running","connection_string":"postgresql://...","pg_password":"xxx"}]
POST .../{eid}/suspend

Suspendre (scale to zero).

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/suspend

Réponse

{"id":"ep-abc","status":"suspended"}
POST .../{eid}/resume

Reprendre un compute suspendu.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/resume

Réponse

{"id":"ep-abc","status":"running"}
PATCH .../{eid}

Mettre à jour les paramètres (auto_suspend_seconds).

Requête

curl -X PATCH -H "Authorization: Bearer $TOKEN" -d '{"auto_suspend_seconds":600}' https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}

Réponse

{"id":"ep-abc","auto_suspend_seconds":600}
GET .../{eid}/allowlist

Récupérer la liste d'autorisation IP.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/allowlist

Réponse

["10.0.0.0/8"]
PUT .../{eid}/allowlist

Remplacer la liste d'autorisation IP.

Requête

curl -X PUT -H "Authorization: Bearer $TOKEN" -d '{"allowlist":["10.0.0.0/8"]}' https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/allowlist

Réponse

["10.0.0.0/8"]
GET /v1/projects/{id}/endpoints/compute-sizes

Lister les tailles de compute disponibles (paliers CU).

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/compute-sizes

Réponse

[{"cu":0.25,"label":"0.25 CU","vcpu":0.25,"memory_gb":0.5},{"cu":1,"label":"1 CU","vcpu":1,"memory_gb":2},{"cu":4,"label":"4 CU","vcpu":4,"memory_gb":8}]
PATCH .../{eid}

Redimensionner un compute. Définissez compute_cu, ou activez l'autoscaling avec min_cu/max_cu.

Requête

curl -X PATCH -H "Authorization: Bearer $TOKEN" \
  -d '{"compute_cu":2,"min_cu":0.5,"max_cu":4}' https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}

Réponse

{"id":"ep-abc","compute_cu":2,"min_cu":0.5,"max_cu":4}

SQL & Schéma

Exécution SQL

Exécutez des requêtes via l'API. Prend en charge les scripts multi-instructions et les méta-commandes psql.

POST .../{eid}/sql

Exécuter du SQL. Retourne les colonnes, les lignes, la durée.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"query":"SELECT * FROM users LIMIT 5"}' https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/sql

Réponse

{"columns":["id","name"],"rows":[{"id":1,"name":"Alice"}],"duration":12}

Introspection de schéma

Parcourez les databases, schémas, tables et colonnes.

GET /v1/projects/{id}/schema

Sans paramètre = databases. ?database=X = schémas. ?database=X&schema=Y = tables + colonnes.

Requête

curl -H "Authorization: Bearer $TOKEN" "https://api-test.lampion.cloud/v1/projects/{id}/schema?database=postgres&schema=public"

Réponse

{"type":"tables","items":[{"name":"users","columns":[{"name":"id","type":"integer"},{"name":"email","type":"text"}]}]}

Bases de données

CRUD des bases de données PostgreSQL au sein d'un endpoint.

GET .../{eid}/databases

Lister les bases de données.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/databases

Réponse

[{"name":"postgres","encoding":"UTF8","size_bytes":8945664}]
POST .../{eid}/databases

Créer une base de données.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" -d '{"name":"myapp"}' https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/databases

Réponse

{"name":"myapp"}
DELETE .../{eid}/databases/{name}

Supprimer une base de données.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/databases/myapp

Réponse

204 No Content

Rôles

Gérez les rôles PostgreSQL.

GET .../{eid}/roles

Lister les rôles.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/roles

Réponse

[{"name":"cloud_admin","is_superuser":true,"can_login":true}]
POST .../{eid}/roles

Créer un rôle.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" -d '{"name":"appuser","password":"secret","can_login":true}' https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/roles

Réponse

{"name":"appuser","can_login":true}
DELETE .../{eid}/roles/{name}

Supprimer un rôle.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/roles/appuser

Réponse

204 No Content
POST .../{eid}/roles/{name}/reset-password

Générer un nouveau mot de passe pour un rôle. Visible une seule fois dans la réponse.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/roles/appuser/reset-password

Réponse

{"name":"appuser","password":"new-generated-password-xyz"}

Permissions

Gérez les privilèges au niveau des tables (GRANT/REVOKE). Privilèges pris en charge : SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALL.

GET .../{eid}/permissions

Lister les grants au niveau des tables pour l'endpoint.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/permissions

Réponse

[{"table":"public.users","role":"appuser","privileges":["SELECT","INSERT","UPDATE"]},{"table":"public.orders","role":"appuser","privileges":["SELECT"]}]
GET .../{eid}/permissions/tables

Lister les tables disponibles pour l'attribution de permissions.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/permissions/tables

Réponse

[{"schema":"public","table":"users"},{"schema":"public","table":"orders"}]
POST .../{eid}/permissions/grant

Accorder des privilèges sur une table à un rôle.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"role":"appuser","schema":"public","table":"users","privileges":["SELECT","INSERT"]}' \
  https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/permissions/grant

Réponse

{"role":"appuser","table":"public.users","granted":["SELECT","INSERT"]}
POST .../{eid}/permissions/revoke

Révoquer des privilèges sur une table à un rôle.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"role":"appuser","schema":"public","table":"users","privileges":["INSERT"]}' \
  https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/permissions/revoke

Réponse

{"role":"appuser","table":"public.users","revoked":["INSERT"]}

Tables (DDL)

Créez, supprimez et modifiez des tables et colonnes via l'API. Toutes les opérations exécutent des instructions DDL sur l'endpoint cible.

POST .../{eid}/tables

Créer une table avec des colonnes (nom, type, clé primaire, NOT NULL).

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"name":"orders","columns":[{"name":"id","type":"serial","primary_key":true},{"name":"total","type":"numeric","nullable":false}]}' \
  https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/tables

Réponse

{"table":"orders","columns":["id","total"]}
DELETE .../{eid}/tables/{table}

Supprimer une table. Irréversible.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/tables/orders

Réponse

204 No Content
POST .../{eid}/tables/{table}/rename

Renommer une table.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"new_name":"customer_orders"}' https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/tables/orders/rename

Réponse

{"old_name":"orders","new_name":"customer_orders"}
POST .../{eid}/tables/{table}/columns

Ajouter une colonne à une table.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"name":"status","type":"text","nullable":true,"default":"pending"}' \
  https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/tables/orders/columns

Réponse

{"column":"status","type":"text"}
DELETE .../{eid}/tables/{table}/columns/{col}

Supprimer une colonne d'une table.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/tables/orders/columns/status

Réponse

204 No Content
POST .../{eid}/tables/{table}/columns/rename

Renommer une colonne.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"old_name":"total","new_name":"total_amount"}' \
  https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/tables/orders/columns/rename

Réponse

{"old_name":"total","new_name":"total_amount"}
PATCH .../{eid}/tables/{table}/columns/{col}

Modifier une colonne (type, nullable, valeur par défaut).

Requête

curl -X PATCH -H "Authorization: Bearer $TOKEN" \
  -d '{"type":"numeric(10,2)","nullable":false,"default":"0"}' \
  https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/tables/orders/columns/total

Réponse

{"column":"total","type":"numeric(10,2)","nullable":false,"default":"0"}

Extensions

Installez et gérez les extensions PostgreSQL.

GET .../{eid}/extensions

Lister les extensions.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/extensions

Réponse

[{"name":"plpgsql","installed":true},{"name":"pgvector","installed":false}]
POST .../{eid}/extensions

Installer une extension.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" -d '{"name":"pgvector"}' https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/extensions

Réponse

{"name":"pgvector","installed":true}
DELETE .../{eid}/extensions/{name}

Désinstaller une extension.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/extensions/pgvector

Réponse

204 No Content

Gestion des données

Seeds de base de données

Attachez jusqu'à 10 scripts SQL ordonnés par projet. Ils s'exécutent automatiquement sur chaque nouvelle branch — données de test, fixtures, extensions. Réordonnez-les, activez/désactivez-les individuellement.

GET /v1/projects/{id}/seeds

Lister tous les scripts seed de ce projet.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/seeds

Réponse

[{"id":"seed-1","name":"fixtures","sql":"INSERT INTO ...","position":1,"enabled":true}]
POST /v1/projects/{id}/seeds

Créer un nouveau script seed.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"name":"fixtures","sql":"INSERT INTO users (name) VALUES (\'Alice\');"}' \
  https://api-test.lampion.cloud/v1/projects/{id}/seeds

Réponse

{"id":"seed-1","name":"fixtures","position":1,"enabled":true}
PATCH /v1/projects/{id}/seeds/{seed_id}

Mettre à jour un seed (nom, sql, activation).

Requête

curl -X PATCH -H "Authorization: Bearer $TOKEN" \
  -d '{"enabled":false}' https://api-test.lampion.cloud/v1/projects/{id}/seeds/{seed_id}

Réponse

{"id":"seed-1","enabled":false}
DELETE /v1/projects/{id}/seeds/{seed_id}

Supprimer un script seed.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/seeds/{seed_id}

Réponse

204 No Content
POST /v1/projects/{id}/seeds/reorder

Réordonner les scripts seed.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"order":["seed-2","seed-1","seed-3"]}' https://api-test.lampion.cloud/v1/projects/{id}/seeds/reorder

Réponse

[{"id":"seed-2","position":1},{"id":"seed-1","position":2},{"id":"seed-3","position":3}]

Replay de requêtes

Capturez les requêtes les plus fréquentes d'une branch (via pg_stat_statements) et rejouez-les sur une autre pour détecter des régressions de performance après une migration.

POST /v1/projects/{id}/replay

Rejoue les N requêtes principales de la source sur la cible. Retourne une comparaison des temps avec détection de régression.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"source_endpoint_id":"ep-main","target_endpoint_id":"ep-staging","limit":20}' \
  https://api-test.lampion.cloud/v1/projects/{id}/replay

Réponse

{"queries":[{"query":"SELECT...","source_mean_ms":1.2,"target_mean_ms":3.8,"ratio":3.17,"status":"regression"}],"summary":{"total":20,"regressions":2,"improvements":5,"stable":13}}

Backups & PITR

Prenez un snapshot de votre base de données à tout moment. Restaurez vers une nouvelle branch sans toucher à la production.

GET /v1/projects/{id}/backups

Lister les snapshots de sauvegarde.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/backups

Réponse

[{"id":"bk-42","name":"before-migration","branch_id":"main-tid","lsn":"0/15A2C08","created_at":"2026-04-01T10:00:00Z"}]
GET /v1/projects/{id}/backups/{bid}

Récupérer une sauvegarde par ID.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/backups/{bid}

Réponse

{"id":"bk-42","name":"before-migration","lsn":"0/15A2C08"}
POST /v1/projects/{id}/backups

Créer un snapshot de sauvegarde.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"name":"before-migration","branch_id":"main-tid"}' https://api-test.lampion.cloud/v1/projects/{id}/backups

Réponse

{"id":"bk-42","name":"before-migration","lsn":"0/15A2C08"}
DELETE /v1/projects/{id}/backups/{bid}

Supprimer une sauvegarde.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/backups/{bid}

Réponse

204 No Content
POST /v1/projects/{id}/backups/{bid}/restore

Restaurer vers une nouvelle branch à ce LSN.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/backups/{bid}/restore

Réponse

{"branch_id":"restored-bk-42","compute_id":"ep-new"}

Export de base de données

Exportez votre base de données dans plusieurs formats via pg_dump. Filtrable par database ou table. Trois formats : SQL brut (.sql), compressé personnalisé (.dump pour pg_restore), et CSV (export d'une seule table).

GET .../{eid}/dump

Télécharger l'export de la base de données. ?format=plain|custom|csv (plain par défaut). ?database=X&table=Y pour une seule table. Le format CSV requiert le paramètre table.

Requête

curl -H "Authorization: Bearer $TOKEN" "https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/dump?format=plain" -o dump.sql

Réponse

-- SQL dump saved to dump.sql
GET .../{eid}/dump

Exporter au format custom (compressé, pour pg_restore).

Requête

curl -H "Authorization: Bearer $TOKEN" "https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/dump?format=custom" -o dump.dump

Réponse

-- Binary dump saved to dump.dump (restore with pg_restore)
GET .../{eid}/dump

Exporter une seule table en CSV (COPY TO STDOUT).

Requête

curl -H "Authorization: Bearer $TOKEN" "https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/dump?format=csv&database=postgres&table=users" -o users.csv

Réponse

-- CSV saved to users.csv

Replicas en lecture

Ajoutez des replicas en lecture seule à n'importe quelle branch. Chaque replica a sa propre connection string et peut être suspendu indépendamment.

GET /v1/projects/{id}/branches/{bid}/replicas

Lister les replicas d'une branch.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/replicas

Réponse

[{"id":"rep-1","status":"running","connection_string":"postgresql://...","read_only":true}]
POST /v1/projects/{id}/branches/{bid}/replicas

Créer un replica en lecture.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/replicas

Réponse

{"id":"rep-1","status":"running","connection_string":"postgresql://...","read_only":true}
DELETE .../{rid}

Supprimer un replica.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/replicas/{rid}

Réponse

204 No Content
POST .../{rid}/suspend

Suspendre un replica.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/replicas/{rid}/suspend

Réponse

{"id":"rep-1","status":"suspended"}
POST .../{rid}/resume

Reprendre un replica suspendu.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/replicas/{rid}/resume

Réponse

{"id":"rep-1","status":"running"}

Import de base de données

Importez une base de données PostgreSQL externe dans une nouvelle branch via pg_dump | psql. Valide la source, vérifie la compatibilité des extensions, et crée la branch automatiquement.

POST /v1/projects/{id}/import/validate

Valider le DSN source : teste la connexion, vérifie la version PG, la taille, la compatibilité des extensions.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"source_dsn":"postgresql://user:pass@host:5432/mydb"}' \
  https://api-test.lampion.cloud/v1/projects/{id}/import/validate

Réponse

{"ok":true,"errors":[],"source":{"pg_version":"17.5","size_mb":142,"tables":12,"extensions":[{"name":"pgvector","version":"0.8.0","available_on_target":true}]}}
POST /v1/projects/{id}/import/start

Démarrer l'import. Crée une nouvelle branch et pipe pg_dump | psql depuis le DSN source.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"source_dsn":"postgresql://user:pass@host:5432/mydb","branch_name":"imported"}' \
  https://api-test.lampion.cloud/v1/projects/{id}/import/start

Réponse

{"branch_id":"imp-tid","branch_name":"imported","compute_id":"ep-imp","status":"importing"}

Sécurité & Confidentialité

Masquage PII (Anonymisation)

Masquez dynamiquement des colonnes sensibles sur une branch avec postgresql_anonymizer. Activez par branch (jamais en production), définissez des règles par colonne, choisissez parmi une allowlist stricte de fonctions de masquage. Une fois activé, un rôle PostgreSQL lampion_analyst avec le label MASKED est créé automatiquement. Les utilisateurs avec le rôle RBAC analyst reçoivent un analyst_connection_string dédié qui se connecte en tant que lampion_analyst et ne voit que les données anonymisées.

GET .../branches/{bid}/anonymization

Récupérer le statut d'anonymisation et les règles actives.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/anonymization

Réponse

{"enabled":true,"analyst_connection_string":"postgresql://lampion_analyst:xxx@db-test.lampion.cloud:5432/ep-abc.postgres?sslmode=require","rules":[{"id":"r-1","schema_name":"public","table_name":"users","column_name":"email","masking_function":"anon.fake_email()"}]}
POST .../anonymization/enable

Activer le masquage dynamique sur cette branch. Installe l'extension anon, applique toutes les règles, et crée un rôle PostgreSQL lampion_analyst avec le label MASKED. Retourne un analyst_connection_string pour un accès anonymisé en lecture seule.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/anonymization/enable

Réponse

{"enabled":true,"analyst_connection_string":"postgresql://lampion_analyst:xxx@db-test.lampion.cloud:5432/ep-abc.postgres?sslmode=require"}
POST .../anonymization/disable

Désactiver le masquage et supprimer tous les labels de sécurité.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/anonymization/disable

Réponse

{"enabled":false}
GET .../anonymization/functions

Lister les fonctions de masquage autorisées (allowlist anti-injection).

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/anonymization/functions

Réponse

[{"function":"anon.fake_email()","description":"Fake email address"},{"function":"anon.fake_iban()","description":"Fake IBAN"},{"function":"anon.hash({COL})","description":"SHA256 hash"}]
GET .../anonymization/rules

Lister les règles de masquage de cette branch.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/anonymization/rules

Réponse

[{"id":"r-1","schema_name":"public","table_name":"users","column_name":"email","masking_function":"anon.fake_email()"}]
POST .../anonymization/rules

Ajouter une règle de masquage. Appliquée en direct si l'anonymisation est activée.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"table_name":"users","column_name":"email","masking_function":"anon.fake_email()"}' \
  https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/anonymization/rules

Réponse

{"id":"r-1","schema_name":"public","table_name":"users","column_name":"email","masking_function":"anon.fake_email()"}
DELETE .../anonymization/rules/{rule_id}

Supprimer une règle de masquage. Retire le label de sécurité en direct si activé.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/branches/{bid}/anonymization/rules/{rule_id}

Réponse

204 No Content

Observabilité

Métriques & Usage

Métriques en temps réel et usage mensuel pour la facturation.

GET /v1/projects/{id}/metrics

En direct : connexions, ratio de cache, stockage, CPU, mémoire.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/metrics

Réponse

{"connections_total":5,"cache_hit_ratio":98.5,"storage_logical_mb":42.3,"compute_cpu_seconds":123.4}
GET /v1/projects/{id}/metrics/history

Métriques historiques (24h max, toutes les 30s).

Requête

curl -H "Authorization: Bearer $TOKEN" "https://api-test.lampion.cloud/v1/projects/{id}/metrics/history?hours=6"

Réponse

[{"snapshot_at":"...","connections_total":3,"storage_logical_mb":42.1}]
GET /v1/projects/{id}/usage

Mensuel : heures de compute, stockage en Go, transfert en Go.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/usage

Réponse

{"compute_hours":12.5,"storage_gb":0.042,"transfer_total_gb":0.001,"period":"2026-03"}
GET /v1/usage

Usage à l'échelle de l'organisation avec les informations du plan et une estimation des coûts.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/usage

Réponse

{"plan":{"name":"dev"},"total":{"compute_hours":25},"estimated_cost":{"total_usd":2.65}}
GET /v1/projects/{id}/metrics/compute-history

Historique d'usage du compute (événements suspend/resume).

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/metrics/compute-history

Réponse

[{"timestamp":"...","event":"resume","duration_s":3600}]
GET /v1/projects/{id}/metrics/vacuum

Statistiques vacuum et autovacuum par table.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/metrics/vacuum

Réponse

[{"table":"users","last_vacuum":"...","dead_tuples":42,"autovacuum_count":3}]

Analyse des requêtes

Tableau de bord des requêtes lentes via pg_stat_statements. Top des requêtes par temps total, temps moyen, ou nombre d'appels.

GET .../{eid}/analyse/slow-queries

Top des requêtes lentes. ?order_by=total_time|mean_time|calls&limit=30

Requête

curl -H "Authorization: Bearer $TOKEN" "https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/analyse/slow-queries?order_by=mean_time"

Réponse

[{"query":"SELECT...","calls":150,"mean_time_ms":12.3,"total_time_ms":1845,"cache_hit_pct":98.5}]
POST .../{eid}/analyse/reset-stats

Réinitialiser tous les compteurs pg_stat_statements.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/analyse/reset-stats

Réponse

{"ok":true}

Logs

Logs du serveur PostgreSQL.

GET .../{eid}/logs

Suivre les logs PG en direct. ?lines=N (200 par défaut, max 5000).

Requête

curl -H "Authorization: Bearer $TOKEN" "https://api-test.lampion.cloud/v1/projects/{id}/endpoints/{eid}/logs?lines=50"

Réponse

{"lines":["2026-03-30 LOG: connection authorized"],"count":50}

Organisation

Webhooks

Notifications HTTP sur événements. Payloads signés en HMAC-SHA256.

GET /v1/orgs/webhooks

Lister les webhooks.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/orgs/webhooks

Réponse

[{"id":"wh-abc","url":"https://...","events":["*"],"enabled":true}]
POST /v1/orgs/webhooks

Créer un webhook. Retourne le secret de signature.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"url":"https://hook.example.com","events":["project.created"]}' https://api-test.lampion.cloud/v1/orgs/webhooks

Réponse

{"id":"wh-abc","secret":"a1b2c3...","events":["project.created"]}
PATCH /v1/orgs/webhooks/{id}

Mettre à jour un webhook.

Requête

curl -X PATCH -H "Authorization: Bearer $TOKEN" -d '{"enabled":false}' https://api-test.lampion.cloud/v1/orgs/webhooks/{id}

Réponse

{"id":"wh-abc","enabled":false}
DELETE /v1/orgs/webhooks/{id}

Supprimer un webhook.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/orgs/webhooks/{id}

Réponse

204 No Content

Membres & Invitations

Gérez les membres de l'organisation, invitez des collaborateurs, transférez la propriété. Rôles : owner, admin, developer, viewer, analyst. Le rôle analyst restreint l'accès aux branches avec l'anonymisation activée — les analysts ne voient que les données masquées via une connection string dédiée.

GET /v1/orgs/members

Lister les membres de l'organisation.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/orgs/members

Réponse

[{"user_id":"u-1","email":"alice@corp.com","role":"owner"},{"user_id":"u-2","email":"bob@corp.com","role":"developer"},{"user_id":"u-3","email":"analyst@corp.com","role":"analyst"}]
PATCH /v1/orgs/members/{uid}/role

Changer le rôle d'un membre. Rôles valides : owner, admin, developer, viewer, analyst.

Requête

curl -X PATCH -H "Authorization: Bearer $TOKEN" -d '{"role":"analyst"}' https://api-test.lampion.cloud/v1/orgs/members/{uid}/role

Réponse

{"user_id":"u-3","role":"analyst"}
DELETE /v1/orgs/members/{uid}

Retirer un membre de l'organisation.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/orgs/members/{uid}

Réponse

204 No Content
POST /v1/orgs/transfer-ownership

Transférer la propriété à un autre membre.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" -d '{"user_id":"u-2"}' https://api-test.lampion.cloud/v1/orgs/transfer-ownership

Réponse

{"ok":true}
GET /v1/orgs/invitations

Lister les invitations en attente.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/orgs/invitations

Réponse

[{"id":"inv-1","email":"carol@corp.com","role":"developer","status":"pending"}]
POST /v1/orgs/invitations

Inviter un utilisateur par email.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -d '{"email":"carol@corp.com","role":"developer"}' https://api-test.lampion.cloud/v1/orgs/invitations

Réponse

{"id":"inv-1","email":"carol@corp.com","role":"developer","status":"pending"}
DELETE /v1/orgs/invitations/{inv_id}

Annuler une invitation en attente.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/orgs/invitations/{inv_id}

Réponse

204 No Content

Clés API

Gérez les clés API de votre organisation. Les clés utilisent le préfixe lmp_live_ et ont des permissions de niveau developer.

GET /v1/orgs/api-keys

Lister les clés API (valeurs tronquées).

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/orgs/api-keys

Réponse

[{"id":"key-1","name":"CI/CD","prefix":"lmp_live_abc...","created_at":"2026-04-01T10:00:00Z"}]
POST /v1/orgs/api-keys

Créer une nouvelle clé API. La clé complète n'est retournée qu'une seule fois.

Requête

curl -X POST -H "Authorization: Bearer $TOKEN" -d '{"name":"CI/CD"}' https://api-test.lampion.cloud/v1/orgs/api-keys

Réponse

{"id":"key-1","name":"CI/CD","key":"lmp_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
DELETE /v1/orgs/api-keys/{key_id}

Révoquer une clé API.

Requête

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/orgs/api-keys/{key_id}

Réponse

204 No Content

Journal d'audit

Chaque action (création de projet, invitation, changement de rôle, suppression) est tracée. Disponible pour les owners.

GET /v1/orgs/audit-log

Lister les événements d'audit. ?limit=N&offset=N pour la pagination.

Requête

curl -H "Authorization: Bearer $TOKEN" "https://api-test.lampion.cloud/v1/orgs/audit-log?limit=10"

Réponse

[{"action":"project.created","actor":"alice@corp.com","target":"my-app","created_at":"2026-04-01T10:00:00Z"}]

Infrastructure

Résidence des données

Preuve de l'emplacement physique de vos données. Région, datacenter, provider, certifications, chiffrement par couche.

GET /v1/projects/{id}/residency

Récupérer le rapport complet de résidence des données d'un projet.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/projects/{id}/residency

Réponse

{"region_id":"fr-par-1","region":{"city":"Paris","provider":"Scaleway","datacenter":"DC2","certifications":["ISO 27001","HDS"]},"data_layers":[...],"compliance":{"data_in_country":"France"}}

Plans

Plans tarifaires.

GET /v1/plans

Lister les plans avec leurs limites et tarifs.

Requête

curl -H "Authorization: Bearer $TOKEN" https://api-test.lampion.cloud/v1/plans

Réponse

[{"name":"free","max_projects":3,"cu_hour_usd":0},{"name":"dev","cu_hour_usd":0.09},{"name":"pro","cu_hour_usd":0.09}]