Points d'accès
Cette page documente tous les endpoints REST disponibles, organisés par domaine. Pour les concepts généraux (authentification, format de réponse, codes de statut), consultez la page Référence API.
Santé & Statut
GET /api/health
Retourne le statut de santé du serveur.
Réponse — 200 :
{
"data": {
"status": "ok"
}
}GET /api/settings/auth-status
Indique si l'authentification est activée et le statut OIDC.
Réponse — 200 :
{
"data": {
"authEnabled": true,
"oidcEnabled": false,
"hasUsers": true
}
}Authentification
POST /api/auth/setup
Crée le premier utilisateur (fonctionne uniquement quand aucun utilisateur n'existe). Cet utilisateur devient super_admin.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
email | string | Oui | Email de l'utilisateur |
password | string | Oui | Mot de passe |
displayName | string | Non | Nom affiché |
Exemple :
{
"email": "admin@example.com",
"password": "securepassword",
"displayName": "Admin"
}Réponse — 201 :
{
"data": {
"token": "eyJhbG...",
"user": {
"id": "user_001",
"email": "admin@example.com",
"displayName": "Admin",
"role": "super_admin"
}
}
}POST /api/auth/login
Authentification par email et mot de passe.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
email | string | Oui | Email de l'utilisateur |
password | string | Oui | Mot de passe |
Réponse — 200 :
{
"data": {
"token": "eyJhbG...",
"user": {
"id": "user_001",
"email": "admin@example.com",
"displayName": "Admin",
"role": "super_admin"
}
}
}POST /api/auth/register
Inscription d'un nouvel utilisateur.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
email | string | Oui | Email de l'utilisateur |
password | string | Oui | Mot de passe |
displayName | string | Non | Nom affiché |
Réponse — 201 :
{
"data": {
"token": "eyJhbG...",
"user": {
"id": "user_002",
"email": "user@example.com",
"displayName": "User",
"role": "user"
}
}
}GET /api/auth/me
Récupère l'utilisateur actuellement authentifié.
Réponse — 200 :
{
"data": {
"id": "user_001",
"email": "admin@example.com",
"displayName": "Admin",
"role": "super_admin"
}
}Administration des utilisateurs
WARNING
Tous les endpoints d'administration des utilisateurs nécessitent le rôle super_admin ou admin.
GET /api/admin/users
Liste tous les utilisateurs avec pagination et recherche.
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
search | string | Filtrer les utilisateurs par nom ou email |
offset | number | Nombre d'utilisateurs à ignorer (défaut : 0) |
limit | number | Nombre maximum d'utilisateurs à retourner (défaut : 50, max : 100) |
Réponse — 200 :
{
"data": {
"users": [
{
"id": "user_001",
"email": "admin@example.com",
"name": "Admin",
"role": "super_admin",
"authProvider": "local",
"avatarUrl": null,
"isSuperAdmin": true,
"createdAt": "2025-01-01T00:00:00Z"
}
],
"total": 1
}
}POST /api/admin/users
Crée un nouvel utilisateur avec un mot de passe généré.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
email | string | Oui | Email de l'utilisateur |
name | string | Oui | Nom affiché |
role | string | Oui | Rôle : super_admin, admin ou user |
Réponse — 201 :
{
"data": {
"user": {
"id": "user_003",
"email": "newuser@example.com",
"name": "New User",
"role": "user",
"authProvider": "local",
"avatarUrl": null,
"isSuperAdmin": false,
"createdAt": "2025-06-01T12:00:00Z"
},
"generatedPassword": "xK9#mP2vL5nQ"
}
}TIP
Le mot de passe généré n'est retourné qu'une seule fois. Partagez-le de manière sécurisée — l'utilisateur sera invité à le changer lors de sa première connexion.
PATCH /api/admin/users/{id}
Met à jour le nom ou le rôle d'un utilisateur.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Non | Nouveau nom affiché |
role | string | Non | Nouveau rôle (super_admin, admin ou user) |
Réponse — 200 :
{
"data": {
"id": "user_003",
"email": "newuser@example.com",
"name": "Updated Name",
"role": "admin",
"authProvider": "local",
"avatarUrl": null,
"isSuperAdmin": false,
"createdAt": "2025-06-01T12:00:00Z"
}
}DELETE /api/admin/users/{id}
Supprime un utilisateur. Impossible de se supprimer soi-même ou de supprimer le dernier super admin. Les projets dont l'utilisateur est propriétaire sont réassignés à un super admin.
Réponse — 204 (pas de corps)
POST /api/admin/users/{id}/reset-password
Réinitialise le mot de passe d'un utilisateur (authentification locale uniquement, non disponible pour les utilisateurs SSO).
Réponse — 200 :
{
"data": {
"generatedPassword": "hN7$kR4wB8mJ"
}
}GET /api/admin/users/{id}/check-delete
Vérifie l'impact de la suppression d'un utilisateur (nombre de projets possédés qui seraient réassignés).
Réponse — 200 :
{
"data": {
"ownedProjectsCount": 3
}
}Organisations
POST /api/organizations
Crée une nouvelle organisation.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom de l'organisation |
Réponse — 201 :
{
"data": {
"id": "org_001",
"name": "My Team"
}
}GET /api/organizations
Liste toutes les organisations auxquelles l'utilisateur appartient.
Réponse — 200 :
{
"data": [
{
"id": "org_001",
"name": "My Team"
}
]
}GET /api/organizations/{id}
Récupère une organisation.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
id | path | string | Identifiant de l'organisation |
Réponse — 200 :
{
"data": {
"id": "org_001",
"name": "My Team"
}
}PATCH /api/organizations/{id}
Met à jour une organisation.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Non | Nouveau nom de l'organisation |
Réponse — 200 :
{
"data": {
"id": "org_001",
"name": "Renamed Team"
}
}DELETE /api/organizations/{id}
Supprime une organisation. Échoue si l'organisation contient encore des projets.
Réponse — 204 (pas de corps)
GET /api/organizations/{id}/members
Liste les membres de l'organisation.
Réponse — 200 :
{
"data": [
{
"userId": "user_001",
"email": "admin@example.com",
"displayName": "Admin",
"role": "admin"
}
]
}POST /api/organizations/{id}/members
Ajoute un membre à une organisation.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
email | string | Oui | Email de l'utilisateur à ajouter |
role | string | Non | Rôle du membre (admin ou member, par défaut member) |
PATCH /api/organizations/{id}/members/{userId}
Met à jour le rôle d'un membre.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
role | string | Oui | Nouveau rôle (admin ou member) |
DELETE /api/organizations/{id}/members/{userId}
Retire un membre de l'organisation.
Réponse — 204 (pas de corps)
PUT /api/organizations/{orgId}/default-credential
Définit le credential par défaut pour une organisation.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
credentialId | string | Oui | Identifiant du credential |
Projets
POST /api/projects
Crée un nouveau projet.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom du projet |
path | string | Oui | Chemin absolu vers le répertoire du projet |
organizationId | string | Non | Organisation à associer |
Réponse — 201 :
{
"data": {
"id": "proj_001",
"name": "My App",
"path": "/home/user/my-app"
}
}GET /api/projects
Liste tous les projets accessibles à l'utilisateur.
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
organizationId | string | Filtrer par organisation |
GET /api/projects/{id}
Récupère un projet.
DELETE /api/projects/{id}
Supprime un projet et tous ses boards, colonnes et cartes.
Réponse — 204 (pas de corps)
PATCH /api/projects/reorder
Réordonne les projets.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
ids | string[] | Oui | Liste ordonnée des identifiants de projets |
PATCH /api/projects/{id}/last-opened
Marque un projet comme dernièrement ouvert (utilisé pour restaurer l'état de l'interface).
Réponse — 204 (pas de corps)
POST /api/projects/{id}/mark-all-read
Marque toutes les cartes d'un projet comme lues.
Réponse — 204 (pas de corps)
GET /api/projects/{id}/export
Exporte le projet complet au format JSON.
Réponse — 200 : Téléchargement du fichier JSON
GET /api/projects/{projectId}/files
Liste les fichiers suivis par git dans le répertoire du projet.
Réponse — 200 :
{
"data": [
"src/main.rs",
"Cargo.toml",
"README.md"
]
}PUT /api/projects/{projectId}/credential
Définit le credential utilisé pour ce projet.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
credentialId | string | Oui | Identifiant du credential |
Membres du projet
GET /api/projects/{id}/members
Liste les membres du projet.
POST /api/projects/{id}/members
Ajoute un membre au projet (par email, crée une invitation en attente si l'utilisateur n'existe pas).
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
email | string | Oui | Email de l'utilisateur |
role | string | Non | Rôle du membre |
PATCH /api/projects/{projectId}/members/{userId}
Met à jour le rôle d'un membre du projet.
DELETE /api/projects/{projectId}/members/{userId}
Retire un membre du projet.
Réponse — 204 (pas de corps)
DELETE /api/projects/{projectId}/invitations/{email}
Supprime une invitation en attente d'un projet.
Réponse — 204 (pas de corps)
Boards
GET /api/projects/{projectId}/boards
Liste tous les boards d'un projet.
Réponse — 200 :
{
"data": [
{
"id": "board_001",
"name": "Main Board",
"projectId": "proj_001",
"position": 0
}
]
}POST /api/projects/{projectId}/boards
Crée un nouveau board dans un projet.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom du board |
templateId | string | Non | Template de board à utiliser pour les colonnes initiales |
Réponse — 201 :
{
"data": {
"id": "board_002",
"name": "Sprint Board",
"projectId": "proj_001",
"position": 1
}
}PATCH /api/projects/{projectId}/boards/{boardId}
Met à jour un board.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Non | Nouveau nom du board |
DELETE /api/projects/{projectId}/boards/{boardId}
Supprime un board et ses colonnes/cartes.
Réponse — 204 (pas de corps)
PATCH /api/projects/{projectId}/boards/reorder
Réordonne les boards d'un projet.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
ids | string[] | Oui | Liste ordonnée des identifiants de boards |
Colonnes
GET /api/projects/{projectId}/columns
Liste les colonnes d'un projet.
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
boardId | string | Filtrer les colonnes par board |
Réponse — 200 :
{
"data": [
{
"id": "col_001",
"name": "Backlog",
"columnType": "backlog",
"position": 0,
"boardId": "board_001"
}
]
}POST /api/projects/{projectId}/columns
Crée une nouvelle colonne.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom de la colonne |
columnType | string | Oui | Type : backlog, active, done, archive |
boardId | string | Oui | Board dans lequel ajouter la colonne |
prompt | string | Non | Prompt de l'agent pour cette colonne |
PATCH /api/projects/{projectId}/columns/{columnId}
Met à jour une colonne.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Non | Nom de la colonne |
prompt | string | Non | Prompt de l'agent |
DELETE /api/projects/{projectId}/columns/{columnId}
Supprime une colonne.
Réponse — 204 (pas de corps)
PATCH /api/projects/{projectId}/columns/reorder
Réordonne les colonnes d'un board.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
ids | string[] | Oui | Liste ordonnée des identifiants de colonnes |
POST /api/projects/{projectId}/columns/{columnId}/clean-all
Supprime toutes les cartes d'une colonne.
Réponse — 204 (pas de corps)
Cartes (portée projet)
GET /api/projects/{projectId}/cards
Liste toutes les cartes d'un projet.
Réponse — 200 :
{
"data": [
{
"id": "card_001",
"title": "Fix login bug",
"columnId": "col_001",
"position": 0,
"hasActiveAgent": false
}
]
}GET /api/projects/{projectId}/cards/{cardId}
Récupère une carte avec tous ses détails.
PATCH /api/projects/{projectId}/cards/{cardId}
Met à jour une carte.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
title | string | Non | Titre de la carte |
prompt | string | Non | Prompt de la carte |
labels | string[] | Non | Labels de la carte |
DELETE /api/projects/{projectId}/cards/{cardId}
Supprime une carte.
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
force | boolean | Ignorer la vérification du worktree (true pour forcer) |
Réponse — 204 (pas de corps)
POST /api/projects/{projectId}/cards/{cardId}/view
Marque une carte comme vue par l'utilisateur courant.
Réponse — 204 (pas de corps)
PATCH /api/projects/{projectId}/cards/{cardId}/move
Déplace une carte vers une autre colonne.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
columnId | string | Oui | Identifiant de la colonne cible |
position | number | Non | Position dans la colonne cible |
GET /api/projects/{projectId}/cards/{cardId}/diff
Récupère le diff git du worktree de la carte.
Réponse — 200 :
{
"data": {
"diff": "diff --git a/src/main.rs ...",
"stats": {
"filesChanged": 3,
"insertions": 42,
"deletions": 10
}
}
}PATCH /api/projects/{projectId}/cards/{cardId}/auto-mode
Active ou désactive le mode auto pour une carte.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
enabled | boolean | Oui | Activer ou désactiver le mode auto |
POST /api/projects/{projectId}/cards/{cardId}/approve-auto
Approuve la progression automatique vers la prochaine colonne du pipeline.
Réponse — 204 (pas de corps)
POST /api/projects/{projectId}/cards/{cardId}/complete
Marque une carte comme terminée.
Réponse — 204 (pas de corps)
POST /api/projects/{projectId}/cards/{cardId}/activate
Active une carte différée.
Réponse — 204 (pas de corps)
PUT /api/projects/{projectId}/cards/{cardId}/credential
Définit le credential pour une carte spécifique.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
credentialId | string | Oui | Identifiant du credential |
Pipeline de carte
GET /api/projects/{projectId}/cards/{cardId}/pipeline
Récupère la configuration du pipeline d'une carte.
Réponse — 200 :
{
"data": {
"steps": [
{
"columnId": "col_001",
"columnName": "Backlog",
"prompt": "Analyze the requirements"
}
]
}
}PUT /api/projects/{projectId}/cards/{cardId}/pipeline
Met à jour la configuration du pipeline d'une carte.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
steps | object[] | Oui | Définitions des étapes du pipeline |
Pièces jointes de carte
GET /api/projects/{projectId}/cards/{cardId}/attachments
Liste les pièces jointes d'une carte.
POST /api/projects/{projectId}/cards/{cardId}/attachments
Téléverse une pièce jointe sur une carte. Utiliser multipart/form-data.
Champs du formulaire :
| Champ | Type | Requis | Description |
|---|---|---|---|
file | file | Oui | Le fichier à téléverser |
Réponse — 201 :
{
"data": {
"id": "att_001",
"filename": "screenshot.png",
"contentType": "image/png",
"size": 45320
}
}GET /api/attachments/{attachmentId}
Télécharge un fichier joint.
Réponse — 200 : Téléchargement du fichier avec l'en-tête Content-Type approprié.
Cartes (API externe simplifiée)
Ces endpoints fournissent une interface simplifiée pour les intégrations externes — pas de scoping projet dans l'URL.
POST /api/cards
Crée une carte (inclut projectId dans le corps).
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
projectId | string | Oui | Identifiant du projet cible |
title | string | Oui | Titre de la carte |
prompt | string | Non | Prompt / description de la carte |
Réponse — 201 :
{
"data": {
"id": "card_001",
"title": "Fix login bug",
"projectId": "proj_001",
"columnId": "col_001",
"position": 0
}
}GET /api/cards/{id}
Récupère le détail d'une carte avec le nom de la colonne et l'historique des sessions.
Réponse — 200 :
{
"data": {
"id": "card_001",
"title": "Fix login bug",
"columnName": "In Progress",
"sessions": []
}
}GET /api/cards/{id}/status
Vérification légère du statut d'une carte.
Réponse — 200 :
{
"data": {
"id": "card_001",
"title": "Fix login bug",
"columnName": "Backlog",
"hasActiveAgent": false
}
}Agents
GET /api/projects/{projectId}/cards/{cardId}/agent
Récupère la session d'agent active pour une carte.
Réponse — 200 :
{
"data": {
"sessionId": "sess_001",
"status": "running",
"cardId": "card_001"
}
}POST /api/projects/{projectId}/cards/{cardId}/agent/cancel
Annule l'agent en cours d'exécution sur une carte.
Réponse — 204 (pas de corps)
GET /api/projects/{projectId}/cards/{cardId}/agent/sessions
Liste toutes les sessions d'agent pour une carte.
GET /api/projects/{projectId}/cards/{cardId}/agent/history
Récupère les résumés de sessions (historique condensé).
GET /api/projects/{projectId}/cards/{cardId}/agent/messages
Récupère les messages de l'agent avec pagination.
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
sessionId | string | Filtrer par session |
since | string | Messages après cette date |
before | string | Messages avant cette date |
limit | number | Nombre maximum de messages |
POST /api/projects/{projectId}/cards/{cardId}/agent/message
Envoie un message à l'agent.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
content | string | Oui | Contenu du message |
POST /api/projects/{projectId}/cards/{cardId}/agent/retry
Relance la dernière action de l'agent.
Réponse — 204 (pas de corps)
POST /api/projects/{projectId}/cards/{cardId}/agent/relaunch
Relance l'agent (nouvelle session).
Réponse — 204 (pas de corps)
POST /api/projects/{projectId}/cards/{cardId}/agent/relay
Relais de contexte vers l'agent (transfert de contexte pour continuation).
Réponse — 204 (pas de corps)
POST /api/projects/{projectId}/cards/{cardId}/agent/plan-approve
Approuve ou révise le plan de l'agent.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
approved | boolean | Oui | Approuver ou non le plan |
feedback | string | Non | Retour ou instructions de révision |
POST /api/projects/{projectId}/cards/{cardId}/summary
Génère un résumé du travail de l'agent sur la carte.
Réponse — 200 :
{
"data": {
"summary": "Implemented login form validation with email format checking..."
}
}GET /api/projects/{projectId}/active-agents
Liste tous les agents actifs d'un projet.
Réponse — 200 :
{
"data": [
{
"cardId": "card_001",
"cardTitle": "Fix login bug",
"status": "running"
}
]
}Assistant
GET /api/projects/{projectId}/assistant
Récupère le statut de l'assistant pour un projet.
POST /api/projects/{projectId}/assistant/message
Envoie un message à l'assistant du projet.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
content | string | Oui | Contenu du message |
Credentials
GET /api/credentials
Liste tous les credentials.
POST /api/credentials
Crée un nouveau credential.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom affiché du credential |
provider | string | Oui | Type de fournisseur (ex. : anthropic, openai) |
apiKey | string | Non | Clé API (si OAuth n'est pas utilisé) |
Réponse — 201 :
{
"data": {
"id": "cred_001",
"name": "My Anthropic Key",
"provider": "anthropic"
}
}GET /api/credentials/{id}
Récupère un credential (la clé API est masquée).
Réponse — 200 :
{
"data": {
"id": "cred_001",
"name": "My Anthropic Key",
"provider": "anthropic",
"apiKey": "sk-ant-...****"
}
}PATCH /api/credentials/{id}
Met à jour un credential.
Réponse — 200 :
{
"data": {
"id": "cred_001",
"name": "Renamed Key",
"provider": "anthropic"
}
}DELETE /api/credentials/{id}
Supprime un credential.
Réponse — 204 (pas de corps)
POST /api/credentials/{id}/verify
Vérifie qu'un credential est valide en testant la connexion API.
Réponse — 200 :
{
"data": {
"valid": true
}
}GET /api/credentials/{id}/usage
Récupère les statistiques d'utilisation d'un credential.
POST /api/credentials/oauth/init
Démarre un flux OAuth pour la configuration d'un credential.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
provider | string | Oui | Fournisseur OAuth |
GET /api/credentials/{id}/oauth/status
Vérifie le statut d'autorisation OAuth d'un credential.
Pré-sessions (planification de prompt)
Les pré-sessions permettent d'affiner le prompt d'une carte avant de lancer l'agent.
POST /api/projects/{projectId}/pre-session
Crée une nouvelle pré-session.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
cardId | string | Oui | Carte pour laquelle créer la pré-session |
POST /api/projects/{projectId}/pre-session/{sessionId}/message
Envoie un message dans la conversation de pré-session.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
content | string | Oui | Contenu du message |
POST /api/projects/{projectId}/pre-session/{sessionId}/accept
Accepte le prompt affiné de la pré-session.
POST /api/projects/{projectId}/pre-session/{sessionId}/cancel
Annule la pré-session.
GET /api/projects/{projectId}/pre-session/{sessionId}/messages
Récupère tous les messages d'une pré-session.
Templates de board
GET /api/board-templates
Liste tous les templates de board.
Réponse — 200 :
{
"data": [
{
"id": "tpl_001",
"name": "Kanban Default",
"columns": [
{ "name": "Backlog", "columnType": "backlog" },
{ "name": "In Progress", "columnType": "active" },
{ "name": "Done", "columnType": "done" }
]
}
]
}POST /api/board-templates
Crée un template de board.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom du template |
columns | object[] | Oui | Définitions des colonnes |
PATCH /api/board-templates/{id}
Met à jour un template de board.
DELETE /api/board-templates/{id}
Supprime un template de board.
Réponse — 204 (pas de corps)
Système de fichiers
GET /api/filesystem/browse
Parcourt les répertoires sur le serveur.
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
path | string | Chemin du répertoire à parcourir |
GET /api/filesystem/read
Lit le contenu d'un fichier sur le serveur.
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
path | string | Chemin du fichier à lire |
Scripts
GET /api/projects/{projectId}/scripts
Liste les scripts configurés pour un projet.
POST /api/projects/{projectId}/scripts
Crée un nouveau script.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom affiché du script |
command | string | Oui | Commande shell à exécuter |
PUT /api/projects/{projectId}/scripts/reorder
Réordonne les scripts.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
ids | string[] | Oui | Liste ordonnée des identifiants de scripts |
GET /api/projects/{projectId}/scripts/status
Récupère le statut d'exécution des scripts.
PUT /api/projects/{projectId}/scripts/{scriptId}
Met à jour un script.
DELETE /api/projects/{projectId}/scripts/{scriptId}
Supprime un script.
Réponse — 204 (pas de corps)
POST /api/projects/{projectId}/scripts/{scriptId}/run
Exécute un script.
POST /api/projects/{projectId}/scripts/{scriptId}/cancel
Annule un script en cours d'exécution.
Commandes slash
GET /api/projects/{projectId}/slash-commands
Liste les commandes slash disponibles pour un projet.
Réponse — 200 :
{
"data": [
{
"name": "/test",
"description": "Run project tests"
}
]
}Paramètres & Configuration
GET /api/settings/auth
Récupère les paramètres d'authentification.
PUT /api/settings/auth
Active ou désactive l'authentification.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
enabled | boolean | Oui | Activer ou désactiver l'authentification |
WARNING
Nécessite le rôle super_admin.
GET /api/settings/notifications
Récupère les préférences de notification.
PUT /api/settings/notifications
Met à jour les préférences de notification.
GET /api/settings/context-relay
Récupère le paramètre du mode context relay.
PUT /api/settings/context-relay
Met à jour le mode context relay.
GET /api/settings/keyboard-shortcuts
Récupère les raccourcis clavier personnalisés.
PUT /api/settings/keyboard-shortcuts
Met à jour les raccourcis clavier personnalisés.
Paramètres utilisateur
GET /api/user/settings
Récupère les préférences de l'utilisateur (thème, état de la sidebar, etc.).
Réponse — 200 :
{
"data": {
"theme": "dark",
"highContrast": false,
"sidebarExpanded": true,
"agentReasoning": true,
"statusLine": true,
"hiddenToolTypes": []
}
}PUT /api/user/settings
Met à jour les préférences de l'utilisateur.
Recherche d'utilisateurs
GET /api/users/search
Recherche des utilisateurs par nom ou email.
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
q | string | Terme de recherche |
Réponse — 200 :
{
"data": [
{
"id": "user_001",
"email": "admin@example.com",
"displayName": "Admin"
}
]
}États des panneaux
Les états des panneaux persistent les préférences de disposition de l'interface par carte.
GET /api/projects/{projectId}/panel-states
Récupère tous les états de panneaux d'un projet.
Réponse — 200 :
{
"data": {}
}PUT /api/projects/{projectId}/panel-states
Met à jour les états des panneaux.
Réponse — 200 :
{
"data": {}
}DELETE /api/projects/{projectId}/panel-states/{cardId}
Supprime l'état d'un panneau pour une carte spécifique.
Réponse — 204 (pas de corps)
Logs
GET /api/logs
Récupère les entrées de log du serveur.
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
level | string | Filtrer par niveau de log (info, warn, error) |
search | string | Recherche plein texte dans les messages de log |
limit | number | Nombre maximum d'entrées à retourner |
Configuration d'export de logs
GET /api/settings/log-export
Récupère la configuration d'export des logs.
PUT /api/settings/log-export
Met à jour la configuration d'export des logs (ex. : agrégation externe).
POST /api/settings/log-export/test
Teste la connexion d'export des logs.
Export & Sauvegarde
POST /api/export
Exporte les données de l'organisation.
POST /api/backups
Crée une sauvegarde complète.
WARNING
Nécessite le rôle super_admin.
GET /api/backups
Liste les sauvegardes disponibles.
WARNING
Nécessite le rôle super_admin.
GET /api/backups/{filename}
Télécharge un fichier de sauvegarde.
WARNING
Nécessite le rôle super_admin.
OIDC (Authentification unique)
GET /api/settings/oidc
Récupère la configuration OIDC.
WARNING
Nécessite le rôle super_admin.
POST /api/settings/oidc
Définit la configuration OIDC.
Corps de la requête :
| Champ | Type | Requis | Description |
|---|---|---|---|
issuerUrl | string | Oui | URL de l'émetteur OIDC |
clientId | string | Oui | Identifiant client |
clientSecret | string | Oui | Secret client |
WARNING
Nécessite le rôle super_admin.
DELETE /api/settings/oidc
Supprime la configuration OIDC.
WARNING
Nécessite le rôle super_admin.
POST /api/oidc/test
Teste la configuration OIDC actuelle.
GET /api/oidc/login
Initie le flux de connexion OIDC. Redirige l'utilisateur vers le fournisseur d'identité.
GET /api/oidc/callback
Gestionnaire de callback OIDC. Reçoit le code d'autorisation et termine l'authentification.
WebSocket
GET /api/ws
Met à niveau la connexion vers un WebSocket pour les événements en temps réel. Toutes les mutations de cartes, changements de statut d'agent et notifications sont diffusés aux clients connectés.
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
token | string | Token Bearer pour l'authentification (requis quand l'auth est activée) |
TIP
Lorsque l'authentification est activée, passez le token en paramètre de requête car les connexions WebSocket ne supportent pas les en-têtes personnalisés lors du handshake. Le serveur ferme la connexion avec le code 4001 si le token est manquant ou invalide.
Connectez-vous avec un client WebSocket standard :
// Sans authentification
const ws = new WebSocket('ws://localhost:37100/api/ws');
// Avec authentification
const ws = new WebSocket('ws://localhost:37100/api/ws?token=eyJhbG...');
ws.onmessage = (event) => {
const message = JSON.parse(event.data);
console.log('Event:', message.type, message.data);
};Après connexion, abonnez-vous à un projet pour recevoir ses événements :
ws.send(JSON.stringify({ type: 'subscribe', payload: { projectId: 1 } }));