B

API BDDpro One

API REST v1 et webhooks signés.

Authentification

Crée une clé depuis Compte → Développeurs → Clés d’API. Envoie-la comme Bearer token.

Authorization: Bearer bddk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Une clé peut être limitée à Lecture, Écriture et/ou Webhooks. Évite d’utiliser une clé avec plus de droits que nécessaire.

Routes v1

GET/rest.php/v1/me
GET/rest.php/v1/bases
GET/rest.php/v1/bases/{baseId}
GET/rest.php/v1/bases/{baseId}/columns
GET/rest.php/v1/bases/{baseId}/rows?limit=100&cursor=0
POST/rest.php/v1/bases/{baseId}/rows
PATCH/rest.php/v1/bases/{baseId}/rows/{rowId}
DELETE/rest.php/v1/bases/{baseId}/rows/{rowId}

Créer et modifier des lignes

Tu peux utiliser directement les identifiants de colonnes via values, ou leurs noms via fields.

{
  "fields": {
    "Client": "ACME",
    "Statut": "Nouveau"
  }
}

Exemple cURL

curl -X POST \
  -H "Authorization: Bearer $BDDPRO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fields":{"Client":"ACME","Statut":"Nouveau"}}' \
  "https://votre-domaine/rest.php/v1/bases/BASE_ID/rows"

Webhooks

Les webhooks se configurent depuis Options → Webhooks de cette base ou via l’API.

row.createdrow.updatedrow.deleted
POST /rest.php/v1/bases/{baseId}/webhooks

{
  "url": "https://exemple.com/webhook",
  "events": ["row.created", "row.updated", "row.deleted"]
}

BDDpro One refuse les URL locales et les réseaux privés. Le bouton Tester permet de vérifier immédiatement la réception.

{
  "event": "row.updated",
  "boardId": "abc123",
  "at": "2026-09-20T20:00:00Z",
  "delivery": "9f23d0a81a13aa70",
  "data": {
    "row": { "id": "f1e2d3c4", "recordId": 42, "values": {} }
  }
}

Vérifier la signature

Le secret whsec_… n’est affiché qu’à la création ou après rotation. La signature HMAC-SHA256 porte sur le corps brut exact.

X-BDD-Event: row.updated
X-BDD-Delivery: 9f23d0a81a13aa70
X-BDD-Signature: sha256=<signature>

PHP

$raw = file_get_contents('php://input');
$received = preg_replace('/^sha256=/', '', $_SERVER['HTTP_X_BDD_SIGNATURE'] ?? '');
$expected = hash_hmac('sha256', $raw, getenv('BDDPRO_WEBHOOK_SECRET'));
if (!hash_equals($expected, $received)) {
    http_response_code(401);
    exit;
}

Node.js

const expected = crypto
  .createHmac("sha256", process.env.BDDPRO_WEBHOOK_SECRET)
  .update(rawBody)
  .digest("hex");

API locale de BDDpro Agent

Cette API est distincte de l’API REST publique. Elle écoute uniquement sur http://127.0.0.1:17883 et permet à BDDpro One de gérer le moteur et le modèle d’IA locale.

L’accès est réservé à l’instance BDDpro One associée à BDDpro Agent. L’origine du navigateur est vérifiée et les requêtes IA utilisent l’en-tête interne X-BDDPro-Local-AI: 1.

Routes locales

GET/api/ai/status
GET/api/ai/models
POST/api/ai/select-model
POST/api/ai/install
POST/api/ai/cancel-install
POST/api/ai/start
POST/api/ai/stop
POST/api/ai/delete
POST/api/ai/generate
POST/api/ai/chat

Exemple

POST http://127.0.0.1:17883/api/ai/generate
Content-Type: application/json
X-BDDPro-Local-AI: 1

{
  "prompt": "Résume cette base.",
  "context": "Colonnes et lignes pertinentes…",
  "temperature": 0.2,
  "maxTokens": 700
}

Le modèle est exécuté sur l’ordinateur de l’utilisateur. Il n’est jamais chargé dans le navigateur et l’agent n’expose aucune commande shell au modèle.

Limites et sécurité

600 requêtes/heure/clé. Les réponses incluent X-RateLimit-Limit et X-RateLimit-Remaining. Les clés révoquées cessent de fonctionner immédiatement.

Pour les webhooks : URL HTTPS publique uniquement, pas de redirection suivie, signature HMAC et identifiant unique X-BDD-Delivery.