Aller au contenu

Bibliothèque et politique

29 routes. Chemins relatifs à https://api.nexus-engine.eu/api/v1.

GET /me/pack-defaut

Le pack posé d’office sur chacun de MES nouveaux projets. Préférence personnelle : elle ne change rien pour les collègues. Un pack supprimé ou dépublié se lit `null`.

RéponsePackDefautDto
PUT /me/pack-defaut

Règle mon pack par défaut, ou le retire (`packId: null`). Un identifiant qui ne désigne pas un pack publié de l’entreprise est refusé plutôt qu’enregistré sans effet.

CorpspackId (nullable)
RéponsePackDefautDto
GET /me/modules-defaut

MES modules par défaut : ceux qui me suivent dans TOUS mes projets, en plus de ceux du projet, et que mes agents seuls reçoivent. Un module supprimé, dépublié ou d’une autre entreprise n’y figure pas.

RéponseModulesDefautDto
PUT /me/modules-defaut session de l’application seulement

Règle mes modules par défaut : la liste REMPLACE la précédente. Réservé à une personne en session — s’en donner un change ce que MES agents reçoivent. Les identifiants inconnus ressortent dans `ecartes`.

CorpsitemIds (string[])
RéponseModulesDefautDto + ecartes
NoteFermée à tout agent, l’assistant compris (7 novembre 2026) : un agent n’étend pas ses propres outils. Il mène la personne à Paramètres › Gestion module ; poser un module sur UN projet reste ouvert (`POST /library/:id/apply`, l’outil des modules).
PUT /library/:id/portee session de l’application seulement

À qui ce module s’adresse SUR CE PROJET. Une liste VIDE efface la portée : le module redevient celui de toute l’équipe, qui est le défaut. Réservé à une personne en session ; installer, lui, reste ouvert à un agent.

CorpsprojectId, memberIds (string[])
Réponse{ ok, memberIds, ecartes }
GET /library

Les modules de la bibliothèque : commandes, sous-agents, compétences, serveurs MCP, modèles.

Requêtestatus=PENDING (administrateurs : les propositions en attente) ; types=INTERFACE (ou une liste séparée par des virgules) : ne rend que ces types ; icones=adresse : les logos hors du JSON (`iconImage` vide, `iconeEmpreinte` à la place) ; portraits=0 : les portraits des auteurs à null ; leger=1 : ni logos ni portraits
RéponseLibraryItemDto[]
NoteSans `types`, les dispositions de l’interface (type INTERFACE) sont écartées : elles s’installent sur un poste, jamais dans un projet, et un poste plus ancien ne saurait pas les montrer. Sans `icones=adresse`, les logos voyagent dans le JSON, comme avant (≈ 2 Mo pour le catalogue d’usine) : un client qui en dessine les lit plutôt à `GET /library/:id/icone/:empreinte`. La réponse porte un `ETag` (faible) : `If-None-Match` → 304 sans corps quand rien n’a changé pour ce membre.
GET /library/diffusions

Les modules diffusés par tous les espaces : la vitrine (nom, description, présentation, auteur), jamais le contenu ; plus ce que l'éditeur doit décider.

RéponseModulesDiffusesDto
GET /library/diffusions/:id/contenu

Le contenu d'un module diffusé. 402 s'il a un prix que l'espace n'a pas payé ; toujours ouvert à son espace et à l'éditeur.

Réponse{ id, type, content }
POST /library/diffusions/:id/installer Owner et Admin session de l’application seulement

Pose une copie du module dans la bibliothèque de l'espace, sur aucun projet (ou remet à jour la copie déjà là). 402 s'il n'est pas payé.

RéponseModuleInstalleDto
POST /library/diffusions/:id/decision session de l’application seulement

L'éditeur de Nexus valide un module pour tous les espaces, ou le refuse.

Corpsdecision (VALIDER | REFUSER), motif
DELETE /library/diffusions/:id session de l’application seulement

Retire un module du catalogue de tous les espaces. Les copies déjà installées restent.

GET /library/:id/diffusion

L'état de la diffusion d'un module de l'espace : au catalogue, en attente, et ce que le module lui-même interdit.

RéponseModuleDiffusionEtatDto
POST /library/:id/diffusion session de l’application seulement

Diffuse une copie figée d'un module publié à tous les espaces, à valider par l'éditeur. Un refus se rend en 200, avec la liste. Module d'usine, copie d'un module d'ailleurs, pack, connecteur, dépôt : refusés.

Corpsconfirmation (le nom du module, recopié)
RéponseModuleDiffusionResultatDto
GET /library/:id/icone/:empreinte

Le logo d’un module, à l’adresse de son empreinte (md5 de la data URL, `iconeEmpreinte`).

Requêteforme=json : `{ dataUrl }` plutôt que l’image
Réponseimage (PNG, JPEG, WebP, GIF, SVG) ou { dataUrl }
NoteEmpreinte à jour : `Cache-Control: private, max-age=31536000, immutable` — un logo changé a une autre adresse. Empreinte périmée : le logo du moment, `no-cache`. `ETag` + `If-None-Match` → 304. Le module d’une autre entreprise, ou sans logo : 404.
GET /library/:id

Un module, contenu et documentation compris.

RéponseLibraryItemDto
POST /library

Propose un module (publié d’office par un administrateur, en attente sinon).

Corpstype (COMMAND, AGENT, MCP, TEMPLATE, SKILL), name, slug, description, content, docs, versionLabel, versionNote, icon, iconImage, repoUrl, links, projectIds
RéponseLibraryItemDto
NoteUne disposition de l’interface (type INTERFACE) s’écrit par une personne en session : 403 pour une clé ou un agent. Son `slug` commence par « interface- », son `content` est le JSON d’une disposition, jugé strictement (400 au premier défaut), et `projectIds` reste vide. LOGO DU MODULE (`iconImage`), deux sources. (1) Le logo OFFICIEL du service : télécharge-le toi-même dans ton dossier de travail (logo SVG du site, apple-touch-icon, favicon PNG — le plus net), puis donne son CHEMIN ; Nexus ne va chercher aucune adresse. (2) Un logo DESSINÉ dans la DA de Nexus, en SVG 256×256 : tuile arrondie <path d="M64 8H192C230 8 248 26 248 64V192C248 230 230 248 192 248H64C26 248 8 230 8 192V64C8 26 26 8 64 8Z"/> remplie d'un dégradé vertical entre les deux teintes d'UNE palette (bleu #63C9F4→#1B5FB5, vert #82DF94→#167940, turquoise #45CDBB→#0C6B6D, violet #CA91F9→#6329B3, indigo #A095FF→#3B32A8, ambre #FFD578→#D98005, corail #FFAA90→#BD432C, ardoise #A9BFD6→#435773, cyan #64DCE5→#147FAD, rose #FF9CC9→#B72A68), et un seul symbole simple en blanc translucide (opacité .72 à .96), centré dans ~140 px, sans texte, sans ombre ni relief, lisible à 28 px. Formes acceptées : le CHEMIN d'un fichier du poste (PNG, JPEG, WebP, GIF ou SVG, 150 Ko au plus), le SVG écrit en texte, ou une data URL base64 ; « » rend l'avatar par défaut. Un SVG ne porte ni script, ni on…, ni <foreignObject>, ni référence externe. Le chemin et le SVG en texte sont convertis par l’application de bureau ; par une clé d’API, seule la data URL passe.
PATCH /library/:id

Modifie un module (auteur ou administrateur) ; un contenu changé crée une version.

Corpsmêmes champs que la création, tous facultatifs
RéponseLibraryItemDto
NoteChanger le LOGO d’un module : `{ "iconImage": … }` seul — il ne crée pas de version et ne renvoie pas le module en relecture. LOGO DU MODULE (`iconImage`), deux sources. (1) Le logo OFFICIEL du service : télécharge-le toi-même dans ton dossier de travail (logo SVG du site, apple-touch-icon, favicon PNG — le plus net), puis donne son CHEMIN ; Nexus ne va chercher aucune adresse. (2) Un logo DESSINÉ dans la DA de Nexus, en SVG 256×256 : tuile arrondie <path d="M64 8H192C230 8 248 26 248 64V192C248 230 230 248 192 248H64C26 248 8 230 8 192V64C8 26 26 8 64 8Z"/> remplie d'un dégradé vertical entre les deux teintes d'UNE palette (bleu #63C9F4→#1B5FB5, vert #82DF94→#167940, turquoise #45CDBB→#0C6B6D, violet #CA91F9→#6329B3, indigo #A095FF→#3B32A8, ambre #FFD578→#D98005, corail #FFAA90→#BD432C, ardoise #A9BFD6→#435773, cyan #64DCE5→#147FAD, rose #FF9CC9→#B72A68), et un seul symbole simple en blanc translucide (opacité .72 à .96), centré dans ~140 px, sans texte, sans ombre ni relief, lisible à 28 px. Formes acceptées : le CHEMIN d'un fichier du poste (PNG, JPEG, WebP, GIF ou SVG, 150 Ko au plus), le SVG écrit en texte, ou une data URL base64 ; « » rend l'avatar par défaut. Un SVG ne porte ni script, ni on…, ni <foreignObject>, ni référence externe. Le chemin et le SVG en texte sont convertis par l’application de bureau ; par une clé d’API, seule la data URL passe.
PUT /library/:id/review Owner et Admin

Publie ou refuse un module proposé.

Corpsstatus (PUBLISHED, REJECTED, PENDING), reviewNote
RéponseLibraryItemDto
PUT /library/:id/authors Owner et Admin

Nomme les contributeurs d’un module.

CorpsmemberIds
RéponseLibraryItemDto
DELETE /library/:id

Supprime un module.

POST /library/atelier

Pose l’atelier d’un module à écrire avec un agent : le dossier « Module » de la barre (réutilisé ou créé) et un projet « Nouveau module » dont l’auteur est membre.

Réponse{ projectId, folderId }
POST /library/:id/apply application de bureau seulement

Installe un module dans un ou plusieurs projets. Sur un PACK, étend la liste : ses membres publiés sont rattachés et ses tâches posées, et la réponse NOMME ce qui n’a pas pu l’être (`packs[].inconnus`, `ecartes`).

CorpsprojectId ou projectIds, withPackTasks (pack : défaut vrai)
Réponse{ ok, projectIds, packs?: PosePackDto[] }
Note409 pour une disposition de l’interface (type INTERFACE) : elle s’installe sur un poste, depuis la bibliothèque de Nexus.
POST /library/:id/detach application de bureau seulement

Retire un module de projets. Sur un PACK, retire aussi ses membres — sauf ceux qu’un AUTRE pack suivi réclame encore, et ceux que `garder` nomme. La réponse rend leurs identifiants : c’est avec eux que le poste efface les fichiers du dépôt.

CorpsprojectIds, garder (pack : membres à laisser en place)
Réponse{ ok, projectIds?, packs?: RetraitPackDto[] }
POST /library/:id/attachments

Joint une capture ou un fichier à un module (8 Mo au plus).

Corpsname, mimeType, dataBase64
RéponseLibraryAttachmentDto
GET /library/:id/attachments/:attId

Le contenu d’une pièce jointe de module, en base64.

Réponse{ name, mimeType, size, dataBase64 }
DELETE /library/:id/attachments/:attId

Retire une pièce jointe de module.

GET /policy

La politique de l’entreprise : conventions par défaut, commandes interdites, serveurs MCP autorisés.

RéponsePolicyDto
PUT /policy Owner et Admin session de l’application seulement

Remplace la politique de l’entreprise.

CorpsdefaultConventions, forbiddenCommands (liste), allowedMcpServers (liste), previewCheckRequired, deployOffHoursBlocked, timezone, preprodAutoDeploy, agentBrowserProduction, agentBrowserAnywhere, agentServerProduction (les gestes d’un agent sur une machine de production : vrai = sans clic, journalisé ; faux = refus net), agentComputerControl (un agent peut demander à contrôler l’ordinateur d’un membre : vrai = la personne répond à chaque fois ; faux = refus net)
RéponsePolicyDto