Aller au contenu

API REST

L’API REST est la même que celle qu’utilise l’interface : il n’existe pas de route privée. Ses URL portent les noms physiques — ceux que vous lisez aussi en SQL.

/api/v1/<tenant>/data/<base>/<table>
/api/v1/t4z56fq/data/b_t4z56fq_ventes/opportunites

Dans l’interface, menu ⋯ de la base → Jetons API et MCP… : on y crée un jeton d’intégration limité à cette base, en lecture seule par défaut, après avoir confirmé son mot de passe. Il n’est affiché qu’une fois ; placez-le dans une variable d’environnement.

Un jeton lit, crée et modifie s’il a été créé en écriture, ne supprime jamais, et n’a jamais plus de droits que la personne qui l’a créé.

Fenêtre de terminal
export BASEDB_TOKEN=bdb_…
curl "http://localhost:3000/api/v1/t4z56fq/data/b_t4z56fq_ventes/opportunites?limit=20" \
-H "Authorization: Bearer $BASEDB_TOKEN"
ParamètreRôle
filterune expression lisible : statut eq "gagne" and montant gte 10000
sort-montant,nom
fieldsles colonnes à renvoyer
limit, cursorpagination par curseur chiffré (next_cursor dans la réponse)
links=displayles relations avec leur valeur d’affichage
count=exactle total, plafonné à 100 000

Les opérateurs : eq, ne, eq_ci, contains, starts_with, ends_with, in, is_null, gt, gte, lt, lte, between, combinés par and, or, not et des parenthèses. Un filtre traverse une relation : clients_id.ville eq "Lyon".

Fenêtre de terminal
curl -X POST "http://localhost:3000/api/v1/t4z56fq/data/b_t4z56fq_ventes/opportunites" \
-H "Authorization: Bearer $BASEDB_TOKEN" -H "content-type: application/json" \
-d '{"values": {"nom": "Audit RGPD", "statut": "nouveau", "montant": 12000}}'

PATCH …/<table>/<_id> modifie une ligne avec le même corps {"values": {…}}. Les erreurs ont une forme unique : { "code": "…", "details": {…}, "request_id": "…" }, avec un code stable par cause.

Chaque écriture renvoie l’en-tête x-basedb-transaction : le passer à POST /api/v1/<tenant>/history/undo ({"transaction": "…"}) l’annule, comme Ctrl+Z dans l’interface — refusé si la ligne a été modifiée depuis.

Avec le même jeton :

RouteRôle
GET …/data/<base>/<table>/aggregatedes résumés sur toutes les lignes d’un filtre : aggregates=montant:sum,nom:filled, group=statut
GET …/data/<base>/<table>/<_id>/comments, POSTlire et écrire les commentaires d’une ligne
POST /api/v1/<tenant>/automations/<id>/runlancer une automatisation déclenchée par un bouton, sur une ligne ({"record": "…"})
GET /api/v1/<tenant>/meta/bases/<base>/dashboardsles tableaux de bord d’une base
GET /api/v1/<tenant>/meta/usersles membres de l’espace, pour un champ Personne
GET /api/v1/<tenant>/meta/templatesles modèles de base de la galerie

Les vues partagées se lisent sans compte : GET /api/v1/views/<jeton> et …/rows en JSON, …/calendar.ics en iCalendar.

Construire — créer une automatisation, un tableau de bord, une intégration — reste réservé à une session de l’interface : un jeton lit et écrit des lignes, il ne change pas la base.

Chaque base a sa page Documentation API et MCP : pour chaque table, ses points d’accès, ses colonnes, des exemples en cURL et en JavaScript. Elle est filtrée par vos droits — deux lecteurs en obtiennent deux versions — et existe aussi en OpenAPI 3.1 (/api/v1/<tenant>/meta/bases/<base>/openapi.json).

La documentation générée d’une base

basedb est un logiciel libre d’Eodia, studio de logiciel IA-natif.