Sessions d’agents
23 routes. Chemins relatifs à https://api.nexus-engine.eu/api/v1.
POST
/rapports-bug
Un défaut de Nexus signalé par un agent (`nexus_signaler_bug`), complété par le poste : regroupé par empreinte, lu par l’exploitant seul. Silencieux : rien ne se diffuse à l’espace.
GET
/sessions/recent
Les dernières sessions d’agents (Claude Code ou Codex) sur mes projets.
Requêtelimit (≤ 50, défaut 12), memberId
RéponseSessionDto[]
GET
/sessions/a-lire
Mes discussions terminées des 90 derniers jours, sous forme minimale (identifiant, projet, fin, empreinte de ce que l’agent a produit) : ce que la barre latérale compte pour la pastille « à lire ».
RéponseDiscussionALireDto[]
NoteLe membre courant seulement — aucun memberId n’est accepté. Mille au plus, les plus récentes d’abord.
GET
/projects/:id/sessions
Les sessions d’un projet.
Requêtelimit
RéponseSessionDto[]
GET
/projects/:id/session-dossiers
Les dossiers de la colonne des discussions du projet.
RéponseSessionDossierDto[]
NoteIls appartiennent au PROJET : toute son équipe les voit, tout membre en crée. L’ordre de la colonne et le pli d’un dossier, eux, restent sur le poste.
POST
/projects/:id/session-dossiers
Créer un dossier de discussions.
Corpsnom
RéponseSessionDossierDto
NoteIl naît EN HAUT (rang 0) : créé en queue, il fallait aller le chercher sous trente autres.
PATCH
/session-dossiers/:id
Renommer un dossier de discussions.
Corpsnom
RéponseSessionDossierDto
DELETE
/session-dossiers/:id
Supprimer un dossier de discussions.
NoteAucune discussion ne part avec lui : elles reviennent hors dossier, à leur place dans la colonne.
PUT
/projects/:id/session-dossiers/ordre
Ranger les dossiers de discussions.
Corpsids
NoteLa liste ENTIÈRE, de haut en bas. Un identifiant qui n’est pas de ce projet est écarté, jamais refusé en bloc.
PUT
/sessions/:id/dossier
Ranger une discussion dans un dossier du projet, ou l’en sortir.
CorpsdossierId
NoteTout membre du projet range, y compris la discussion d’un collègue : c’est ce qui rend les dossiers partagés utiles. `dossierId: null` la sort.
GET
/sessions/:id
Une session : fichiers touchés, commandes, vérifications, prompts, tokens.
GET
/sessions/:id/conversation
La conversation compactée d’une session, par pages de 500 (lecture pour tout membre du projet) ; sans paramètre, la dernière page.
Requêtedepuis (indice du premier message), limite (1 à 500)
RéponseSessionConversationDto { messages, depuis, total, utilisateursAvant }
POST
/sessions
application de bureau seulement
Ouvre une session : c’est l’application qui le fait quand l’agent démarre.
CorpsprojectId, taskId, branch, claudeSessionId, engine (claude, codex), designItemId? (la création du Studio dont c’est la discussion d’édition — retenue seulement si elle est de ce projet)
RéponseSessionDto
PATCH
/sessions/:id
Met à jour ma session : titre, archivage, tâche rattachée, résumé, clôture.
Corpstitle, archived, taskId, summary, branch, ended, moveTaskToReview (et les mesures que l’application dépose : filesTouched, commands, checks, prompts, conversation, tokens)
RéponseSessionDto
NoteRéservé à l’auteur de la session.
PUT
/sessions/:id/partage
session de l’application seulement
Partage avec l’équipe du projet une discussion importée que je gardais pour moi, ou la reprend.
Corpspartage (booléen)
Réponse{ prive }
NoteL’auteur seul. Gardée, une discussion n’est lisible de personne d’autre, administrateurs compris, et n’entre pas dans la mémoire de l’agence ; ses mesures restent comptées. Refusé (409) sur une discussion conduite dans Nexus : c’est du travail du projet.
POST
/projects/:id/sessions/import
session de l’application seulement
Reprend dans un projet des discussions tenues AVANT Nexus, relevées par l’application dans les dossiers de Claude Code et de Codex (chantier 53).
Corpsdiscussions[] (20 au plus) : engine, origine (chatgpt | claude-ai, facultatif), prive (facultatif), claudeSessionId, title, startedAt, endedAt, summary, branch, prompts[], conversation[]
Réponse{ resultats: [{ claudeSessionId, etat (importee | deja | refusee), sessionId, raison }], importees }
NoteLa seule route qui accepte une date de début : une conversation du mois dernier se range au mois dernier. Elle porte son contenu et ses dates, jamais ses mesures (tokens à zéro, coût et temps actif nuls, importedAt posé). Idempotente sur (membre, moteur, session) : réimporter ne duplique rien, et la réponse dit où elle se trouve. Le ménage des douze mois ne la touche pas : aucune ancienneté n’est refusée. Refuse le lot entier sur un projet en mode aveugle. `origine` (export d’un service web) : le moteur le plus proche est posé, `importOrigin` le dit, et elle ne se reprend pas (409 sur `POST /sessions`). `prive` : lisible de son seul auteur tant qu’il ne l’a pas partagée (`PUT /sessions/:id/partage`).
POST
/sessions/:id/tours
application de bureau seulement
Le journal de tour : ce qu’un tour d’agent a demandé, répondu et écrit, composé par le poste depuis le transcript. Idempotent par sa clé ; nomme une discussion sans titre ; indexé dans la mémoire de l’agence une minute après.
Corpscle, debut, fin, demande, reponse, fichiers, outils, branche, commit, interrompu
Réponse{ ok, titre }
Note404 discussion d’un autre membre ou d’une autre entreprise ; 410 supprimée ; 409 projet en mode aveugle ; 403 un agent ou une clé.
GET
/projects/:id/point-equipe
Le point d’équipe : les derniers tours des AUTRES discussions du projet depuis une date (un jour au plus), et celles qui travaillent en ce moment. Ce que le poste glisse au prompt d’un agent.
Requêtesauf (une discussion), depuis (date ISO)
RéponsePointEquipeDto
NoteUn projet en mode aveugle rend { aveugle: true } et rien d’autre.
GET
/projects/:id/chantier
application de bureau seulement
Le chantier en cours : les fichiers que les discussions vivantes des COLLÈGUES ont modifiés sur ce projet (le battement les porte). Le poste prévient son agent avant qu’il n’écrive le même fichier, sans jamais refuser.
Requêtesauf (une discussion)
RéponseChantierEnCoursDto[]
NoteVide sous mode aveugle.
POST
/sessions/:id/courrier
application de bureau seulement
Le courrier entre postes : un mot laissé par un agent à la discussion d’un collègue du même projet, remis avec le prochain message que celui-ci écrira — jamais tapé dans son terminal.
CorpsdeSessionId (la discussion qui écrit), texte (1 à 2 000)
Réponse{ ok, id }
Note404 « session inconnue » hors du projet ; 409 mode aveugle ; 429 trente mots en dix minutes.
POST
/sessions/:id/courrier/remis
application de bureau seulement
Le poste dit quel courrier il a remis à sa discussion : ces mots ne se remettent plus.
POST
/sessions/:id/heartbeat
application de bureau seulement
Battement de cœur d’une session ouverte. Le corps, facultatif, porte le voyant du poste : dirtyFiles, aheadCommits, branch — ce que la session retient encore pour elle, visible de l’équipe.
DELETE
/sessions/:id
Retire ma session des listes (elle reste comptée).