Documentation complète de l'API de gestion des dossiers (bases de connaissances) dans Devana.ai.
Base URL: https://api.devana.ai
Préfixe: /v1/folders
Authentification: API Key requise
L'API Folders permet de gérer les dossiers (bases de connaissances) qui contiennent les documents utilisés par les agents IA. Chaque dossier peut contenir plusieurs fichiers et être partagé entre utilisateurs.
Fonctionnalités principales :
Toutes les requêtes nécessitent une clé API dans le header Authorization :
Authorization: Bearer YOUR_API_KEY
La clé API peut être obtenue depuis l'interface d'administration ou via l'endpoint /v1/auth/login.
Récupère la liste de tous les dossiers appartenant à l'utilisateur ainsi que les dossiers partagés avec lui.
GET /v1/folders
Authorization: Bearer YOUR_API_KEY
{
"success": true,
"data": [
{
"status": "fulfilled",
"value": {
"id": "cm4abc123def456ghi789",
"name": "Documentation Technique",
"description": "Base de connaissances pour le support technique",
"chunkSize": 500,
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-20T14:45:00.000Z",
"words": 125000
}
},
{
"status": "fulfilled",
"value"
curl -X GET https://api.devana.ai/v1/folders \
-H "Authorization: Bearer YOUR_API_KEY"
Récupère les détails complets d'un dossier spécifique.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | String (CUID) | Oui | Identifiant unique du dossier |
GET /v1/folders/cm4abc123def456ghi789
Authorization: Bearer YOUR_API_KEY
{
"success": true,
"data": {
"id": "cm4abc123def456ghi789",
"name": "Documentation Technique",
"description": "Base de connaissances pour le support technique",
"chunkSize": 500,
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-20T14:45:00.000Z",
"words": 125000
}
}
curl -X GET https://api.devana.ai/v1/folders/cm4abc123def456ghi789 \
-H "Authorization: Bearer YOUR_API_KEY"
Crée un nouveau dossier pour organiser des documents.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
name | String | Oui | Nom du dossier |
description | String | Non | Description du dossier |
chunkSize | Number | Non | Taille des chunks pour l'indexation (par défaut: 500) |
POST /v1/folders
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"name": "Base de connaissances Produit",
"description": "Documentation complète de nos produits",
"chunkSize": 400
}
{
"success": true,
"data": {
"id": "cm4new789folder123xyz",
"name": "Base de connaissances Produit",
"description": "Documentation complète de nos produits",
"words": 0,
"chunkSize": 400,
"createdAt": "2024-10-28T10:00:00.000Z",
"updatedAt": "2024-10-28T10:00:00.000Z"
}
}
curl -X POST https://api.devana.ai/v1/folders \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Base de connaissances Produit",
"description": "Documentation complète de nos produits",
"chunkSize": 400
}'
Met à jour les propriétés d'un dossier existant.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | String (CUID) | Oui | Identifiant unique du dossier |
| Paramètre | Type | Requis | Description |
|---|---|---|---|
name | String | Non | Nouveau nom du dossier |
description | String | Non | Nouvelle description |
chunkSize | Number | Non | Nouvelle taille de chunks (ré-indexe tous les fichiers) |
PUT /v1/folders/cm4abc123def456ghi789
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"name": "Documentation Technique V2",
"description": "Base de connaissances mise à jour",
"chunkSize": 600
}
{
"success": true,
"data": {
"id": "cm4abc123def456ghi789",
"name": "Documentation Technique V2",
"description": "Base de connaissances mise à jour",
"words": 125000,
"chunkSize": 600,
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-10-28T11:00:00.000Z"
}
}
⚠️ Important : Modifier le chunkSize déclenche une ré-indexation complète de tous les fichiers du dossier.
curl -X PUT https://api.devana.ai/v1/folders/cm4abc123def456ghi789 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Documentation Technique V2",
"chunkSize": 600
}'
Supprime définitivement un dossier et tous ses fichiers associés.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | String (CUID) | Oui | Identifiant unique du dossier |
DELETE /v1/folders/cm4abc123def456ghi789
Authorization: Bearer YOUR_API_KEY
{
"success": true,
"data": {
"message": "Folder Documentation Technique deleted"
}
}
⚠️ Attention :
isBase: true) ne peuvent pas être suppriméscurl -X DELETE https://api.devana.ai/v1/folders/cm4abc123def456ghi789 \
-H "Authorization: Bearer YOUR_API_KEY"
Associe des fichiers existants à un dossier.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | String (CUID) | Oui | Identifiant unique du dossier |
| Paramètre | Type | Requis | Description |
|---|---|---|---|
filesIds | Array[String] | Oui | Liste des IDs de fichiers à associer |
POST /v1/folders/cm4abc123def456ghi789/files
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"filesIds": ["cm4file1abc123xyz", "cm4file2def456uvw", "cm4file3ghi789rst"]
}
{
"success": true,
"data": ["cm4file1abc123xyz", "cm4file2def456uvw", "cm4file3ghi789rst"]
}
Notes :
curl -X POST https://api.devana.ai/v1/folders/cm4abc123def456ghi789/files \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"filesIds": ["cm4file1abc123xyz", "cm4file2def456uvw"]
}'
Récupère la liste de tous les fichiers associés à un dossier.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | String | Oui | Identifiant unique du dossier |
GET /v1/folders/cm4abc123def456ghi789/files
Authorization: Bearer YOUR_API_KEY
{
"success": true,
"data": [
{
"id": "cm4file1abc123xyz",
"name": "manuel-utilisateur.pdf",
"size": 2456789,
"mimetype": "application/pdf"
},
{
"id": "cm4file2def456uvw",
"name": "guide-installation.docx",
"size": 1234567,
"mimetype": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
},
{
"id": "cm4file3ghi789rst",
"name": "faq.md",
curl -X GET https://api.devana.ai/v1/folders/cm4abc123def456ghi789/files \
-H "Authorization: Bearer YOUR_API_KEY"
Supprime définitivement un fichier spécifique d'un dossier.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | String | Oui | Identifiant unique du dossier |
fileId | String | Oui | Identifiant unique du fichier |
DELETE /v1/folders/cm4abc123def456ghi789/files/cm4file1abc123xyz
Authorization: Bearer YOUR_API_KEY
{
"success": true,
"data": {
"message": "File deleted successfully."
}
}
⚠️ Attention : La suppression est définitive et entraîne :
curl -X DELETE https://api.devana.ai/v1/folders/cm4abc123def456ghi789/files/cm4file1abc123xyz \
-H "Authorization: Bearer YOUR_API_KEY"
isBase: true)L'API vérifie automatiquement les permissions selon le contexte :
guardAuthorizedFolderRightsguardAuthorizedFolderRightsWriteUn chunk est un segment de texte utilisé pour l'indexation vectorielle. La taille du chunk affecte :
Lorsque vous modifiez le chunkSize d'un dossier :
| Code | Message | Description |
|---|---|---|
400 | Bad Request | Paramètres invalides ou manquants |
401 | Unauthorized | Clé API manquante ou invalide |
403 | Forbidden | Permissions insuffisantes |
404 | Not Found | Dossier ou fichier introuvable |
409 | Conflict | Fichiers déjà associés au dossier |
500 | Internal Server Error | Erreur serveur inattendue |
# 1. Créer le dossier
FOLDER_ID=$(curl -X POST https://api.devana.ai/v1/folders \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Knowledge Base Produit",
"description": "Documentation produit complète",
"chunkSize": 500
}' | jq -r '.data.id')
echo "Dossier créé: $FOLDER_ID"
# 2. Uploader des fichiers (via /api/upload)
FILE1_ID=$(curl -X POST https://api.devana.ai/api/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@manuel.pdf" | jq -r '.data.ids[0]')
FILE2_ID=$(curl -X POST https://api.devana.ai/api/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@guide.docx" | jq -r '.data.ids[0]')
# 3. Associer les fichiers au dossier
curl -X POST "https://api.devana.ai/v1/folders/$FOLDER_ID/files" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"filesIds\": [\"$FILE1_ID\", \"$FILE2_ID\"]
}"
# 4. Vérifier les fichiers
curl -X GET "https://api.devana.ai/v1/folders/$FOLDER_ID/files" \
-H "Authorization: Bearer YOUR_API_KEY"
# 1. Récupérer les informations actuelles
FOLDER_INFO=$(curl -X GET https://api.devana.ai/v1/folders/cm4abc123def456ghi789 \
-H "Authorization: Bearer YOUR_API_KEY")
echo "Configuration actuelle:"
echo $FOLDER_INFO | jq '.data.chunkSize'
# 2. Modifier la taille des chunks (déclenche la ré-indexation)
curl -X PUT https://api.devana.ai/v1/folders/cm4abc123def456ghi789 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chunkSize": 800
}'
echo "Ré-indexation en cours..."
# 3. Vérifier le statut (via l'API Jobs si disponible)
curl -X GET "https://api.devana.ai/v1/jobs?targetId=cm4abc123def456ghi789&type=EMBEDDING" \
-H "Authorization: Bearer YOUR_API_KEY"
# 1. Lister tous les fichiers
FILES=$(curl -X GET https://api.devana.ai/v1/folders/cm4abc123def456ghi789/files \
-H "Authorization: Bearer YOUR_API_KEY" | jq -r '.data[].id')
# 2. Supprimer chaque fichier
for FILE_ID in $FILES; do
echo "Suppression de $FILE_ID..."
curl -X DELETE "https://api.devana.ai/v1/folders/cm4abc123def456ghi789/files/$FILE_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
done
echo "Tous les fichiers ont été supprimés"
Les dossiers peuvent être associés aux agents IA pour leur fournir une base de connaissances :
// Exemple d'association via l'API Agents
const associateFolderToAgent = async (agentId, folderId) => {
const response = await fetch(`https://api.devana.ai/v1/agents/${agentId}`, {
method: "PUT",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
folderIds: [folderId], // Ajouter le dossier à l'agent
}),
});
return response.json();
};
Organisation des dossiers
Optimisation des chunks
Gestion des permissions
Performance
Pour toute question ou problème concernant l'API Folders :