Skip to content

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 :

json
{
  "data": {
    "status": "ok"
  }
}

GET /api/settings/auth-status

Indique si l'authentification est activée et le statut OIDC.

Réponse — 200 :

json
{
  "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 :

ChampTypeRequisDescription
emailstringOuiEmail de l'utilisateur
passwordstringOuiMot de passe
displayNamestringNonNom affiché

Exemple :

json
{
  "email": "admin@example.com",
  "password": "securepassword",
  "displayName": "Admin"
}

Réponse — 201 :

json
{
  "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 :

ChampTypeRequisDescription
emailstringOuiEmail de l'utilisateur
passwordstringOuiMot de passe

Réponse — 200 :

json
{
  "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 :

ChampTypeRequisDescription
emailstringOuiEmail de l'utilisateur
passwordstringOuiMot de passe
displayNamestringNonNom affiché

Réponse — 201 :

json
{
  "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 :

json
{
  "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ètreTypeDescription
searchstringFiltrer les utilisateurs par nom ou email
offsetnumberNombre d'utilisateurs à ignorer (défaut : 0)
limitnumberNombre maximum d'utilisateurs à retourner (défaut : 50, max : 100)

Réponse — 200 :

json
{
  "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 :

ChampTypeRequisDescription
emailstringOuiEmail de l'utilisateur
namestringOuiNom affiché
rolestringOuiRôle : super_admin, admin ou user

Réponse — 201 :

json
{
  "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 :

ChampTypeRequisDescription
namestringNonNouveau nom affiché
rolestringNonNouveau rôle (super_admin, admin ou user)

Réponse — 200 :

json
{
  "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 :

json
{
  "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 :

json
{
  "data": {
    "ownedProjectsCount": 3
  }
}

Organisations

POST /api/organizations

Crée une nouvelle organisation.

Corps de la requête :

ChampTypeRequisDescription
namestringOuiNom de l'organisation

Réponse — 201 :

json
{
  "data": {
    "id": "org_001",
    "name": "My Team"
  }
}

GET /api/organizations

Liste toutes les organisations auxquelles l'utilisateur appartient.

Réponse — 200 :

json
{
  "data": [
    {
      "id": "org_001",
      "name": "My Team"
    }
  ]
}

GET /api/organizations/{id}

Récupère une organisation.

ParamètreEmplacementTypeDescription
idpathstringIdentifiant de l'organisation

Réponse — 200 :

json
{
  "data": {
    "id": "org_001",
    "name": "My Team"
  }
}

PATCH /api/organizations/{id}

Met à jour une organisation.

Corps de la requête :

ChampTypeRequisDescription
namestringNonNouveau nom de l'organisation

Réponse — 200 :

json
{
  "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 :

json
{
  "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 :

ChampTypeRequisDescription
emailstringOuiEmail de l'utilisateur à ajouter
rolestringNonRô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 :

ChampTypeRequisDescription
rolestringOuiNouveau 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 :

ChampTypeRequisDescription
credentialIdstringOuiIdentifiant du credential

Projets

POST /api/projects

Crée un nouveau projet.

Corps de la requête :

ChampTypeRequisDescription
namestringOuiNom du projet
pathstringOuiChemin absolu vers le répertoire du projet
organizationIdstringNonOrganisation à associer

Réponse — 201 :

json
{
  "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ètreTypeDescription
organizationIdstringFiltrer 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 :

ChampTypeRequisDescription
idsstring[]OuiListe 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 :

json
{
  "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 :

ChampTypeRequisDescription
credentialIdstringOuiIdentifiant 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 :

ChampTypeRequisDescription
emailstringOuiEmail de l'utilisateur
rolestringNonRô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 :

json
{
  "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 :

ChampTypeRequisDescription
namestringOuiNom du board
templateIdstringNonTemplate de board à utiliser pour les colonnes initiales

Réponse — 201 :

json
{
  "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 :

ChampTypeRequisDescription
namestringNonNouveau 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 :

ChampTypeRequisDescription
idsstring[]OuiListe ordonnée des identifiants de boards

Colonnes

GET /api/projects/{projectId}/columns

Liste les colonnes d'un projet.

Paramètres de requête :

ParamètreTypeDescription
boardIdstringFiltrer les colonnes par board

Réponse — 200 :

json
{
  "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 :

ChampTypeRequisDescription
namestringOuiNom de la colonne
columnTypestringOuiType : backlog, active, done, archive
boardIdstringOuiBoard dans lequel ajouter la colonne
promptstringNonPrompt de l'agent pour cette colonne

PATCH /api/projects/{projectId}/columns/{columnId}

Met à jour une colonne.

Corps de la requête :

ChampTypeRequisDescription
namestringNonNom de la colonne
promptstringNonPrompt 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 :

ChampTypeRequisDescription
idsstring[]OuiListe 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 :

json
{
  "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 :

ChampTypeRequisDescription
titlestringNonTitre de la carte
promptstringNonPrompt de la carte
labelsstring[]NonLabels de la carte

DELETE /api/projects/{projectId}/cards/{cardId}

Supprime une carte.

Paramètres de requête :

ParamètreTypeDescription
forcebooleanIgnorer 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 :

ChampTypeRequisDescription
columnIdstringOuiIdentifiant de la colonne cible
positionnumberNonPosition 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 :

json
{
  "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 :

ChampTypeRequisDescription
enabledbooleanOuiActiver 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 :

ChampTypeRequisDescription
credentialIdstringOuiIdentifiant 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 :

json
{
  "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 :

ChampTypeRequisDescription
stepsobject[]OuiDé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 :

ChampTypeRequisDescription
filefileOuiLe fichier à téléverser

Réponse — 201 :

json
{
  "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 :

ChampTypeRequisDescription
projectIdstringOuiIdentifiant du projet cible
titlestringOuiTitre de la carte
promptstringNonPrompt / description de la carte

Réponse — 201 :

json
{
  "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 :

json
{
  "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 :

json
{
  "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 :

json
{
  "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ètreTypeDescription
sessionIdstringFiltrer par session
sincestringMessages après cette date
beforestringMessages avant cette date
limitnumberNombre maximum de messages

POST /api/projects/{projectId}/cards/{cardId}/agent/message

Envoie un message à l'agent.

Corps de la requête :

ChampTypeRequisDescription
contentstringOuiContenu 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 :

ChampTypeRequisDescription
approvedbooleanOuiApprouver ou non le plan
feedbackstringNonRetour 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 :

json
{
  "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 :

json
{
  "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 :

ChampTypeRequisDescription
contentstringOuiContenu du message

Credentials

GET /api/credentials

Liste tous les credentials.

POST /api/credentials

Crée un nouveau credential.

Corps de la requête :

ChampTypeRequisDescription
namestringOuiNom affiché du credential
providerstringOuiType de fournisseur (ex. : anthropic, openai)
apiKeystringNonClé API (si OAuth n'est pas utilisé)

Réponse — 201 :

json
{
  "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 :

json
{
  "data": {
    "id": "cred_001",
    "name": "My Anthropic Key",
    "provider": "anthropic",
    "apiKey": "sk-ant-...****"
  }
}

PATCH /api/credentials/{id}

Met à jour un credential.

Réponse — 200 :

json
{
  "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 :

json
{
  "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 :

ChampTypeRequisDescription
providerstringOuiFournisseur 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 :

ChampTypeRequisDescription
cardIdstringOuiCarte 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 :

ChampTypeRequisDescription
contentstringOuiContenu 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 :

json
{
  "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 :

ChampTypeRequisDescription
namestringOuiNom du template
columnsobject[]OuiDé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ètreTypeDescription
pathstringChemin du répertoire à parcourir

GET /api/filesystem/read

Lit le contenu d'un fichier sur le serveur.

Paramètres de requête :

ParamètreTypeDescription
pathstringChemin 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 :

ChampTypeRequisDescription
namestringOuiNom affiché du script
commandstringOuiCommande shell à exécuter

PUT /api/projects/{projectId}/scripts/reorder

Réordonne les scripts.

Corps de la requête :

ChampTypeRequisDescription
idsstring[]OuiListe 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 :

json
{
  "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 :

ChampTypeRequisDescription
enabledbooleanOuiActiver 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 :

json
{
  "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

Recherche des utilisateurs par nom ou email.

Paramètres de requête :

ParamètreTypeDescription
qstringTerme de recherche

Réponse — 200 :

json
{
  "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 :

json
{
  "data": {}
}

PUT /api/projects/{projectId}/panel-states

Met à jour les états des panneaux.

Réponse — 200 :

json
{
  "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ètreTypeDescription
levelstringFiltrer par niveau de log (info, warn, error)
searchstringRecherche plein texte dans les messages de log
limitnumberNombre 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 :

ChampTypeRequisDescription
issuerUrlstringOuiURL de l'émetteur OIDC
clientIdstringOuiIdentifiant client
clientSecretstringOuiSecret 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ètreTypeDescription
tokenstringToken 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 :

javascript
// 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 :

javascript
ws.send(JSON.stringify({ type: 'subscribe', payload: { projectId: 1 } }));