12 routes. Chemins relatifs à https://api.nexus-engine.eu/api/v1.
GET
/credentials/projets
Tous les accès rangés dans les projets que le membre voit, avec le nom du projet et sans leurs secrets — ce que le coffre montre sous « Rangés dans les projets ».
RéponseProjectCredentialDuCoffreDto[]
GET
/projects/:id/credentials
Les accès techniques d’un projet, sans leurs secrets.
RéponseProjectCredentialDto[]
POST
/projects/:id/credentials
Ajoute un accès à un projet.
Corpskind (SERVER, SSH, FTP, DATABASE, API_KEY, SERVICE, ENV_VAR, FILE, OTHER), label, environment (PRODUCTION, STAGING, DEVELOPMENT, OTHER, défaut OTHER), host, port, username, url, database, notes, secret (jamais rendu ensuite ; pour FILE, le contenu en base64), fileName (FILE : le nom du fichier à reposer), genererSecret (vrai : Nexus tire un secret aléatoire et ignore `secret`), exposeToClaude
RéponseProjectCredentialDto
PATCH
/projects/:id/credentials/:credentialId
Modifie un accès (secret compris, s’il est fourni).
Corpskind (SERVER, SSH, FTP, DATABASE, API_KEY, SERVICE, ENV_VAR, FILE, OTHER), label, environment (PRODUCTION, STAGING, DEVELOPMENT, OTHER, défaut OTHER), host, port, username, url, database, notes, secret (jamais rendu ensuite ; pour FILE, le contenu en base64), fileName (FILE : le nom du fichier à reposer), genererSecret (vrai : Nexus tire un secret aléatoire et ignore `secret`), exposeToClaude
RéponseProjectCredentialDto
GET
/projects/:id/credentials/:credentialId/secret
Révèle le secret d’un accès : journalisé, plafonné à 30 par heure et par membre.
GET
/projects/:id/machines
Les machines du parc rattachées à ce projet depuis l’onglet Accès de sa fiche, sans leurs accès.
RéponseMachinesDuProjetDto { machines: [{ id, name, hostname, provider, rattacheeLe }] }
NoteEn plus de la machine que le projet EST (`serverId`) et de celles qui hébergent ses sites. Leurs accès se lisent par `/servers/:id/credentials`.
POST
/projects/:id/machines
Rattache une ou plusieurs machines existantes du parc à ce projet : son équipe et ses agents en reçoivent la fiche et les accès.
CorpsserverIds (1 à 50 identifiants de machines que l’appelant voit)
RéponseRattachementReponse { rattaches, dejaLa }
NoteTout ou rien : 404 « Machine introuvable. » si une seule est hors de portée. Rejouable : une machine déjà rattachée revient dans `dejaLa`. La machine confiée par ce lien vient SANS les autres sites qu’elle héberge. Journal `projet.machine-rattachee`.
DELETE
/projects/:id/machines/:serverId
Détache une machine du projet. La machine reste au parc, avec ses accès.
Réponse{ ok }
NoteNe défait que le lien posé par `POST /projects/:id/machines` : la machine d’un site du projet se détache en déliant le site. Journal `projet.machine-detachee`.
POST
/projects/:id/acces-rattaches
Rattache à ce projet un ou plusieurs accès déjà rangés au coffre de l’entreprise : ils arrivent à son équipe, à son `.env`, à ses connecteurs et à ses agents.
CorpscredentialIds (1 à 50 accès du coffre que l’appelant voit), deplacer (vrai : un accès rangé sur un autre projet le quitte pour celui-ci)
RéponseRattachementReponse { rattaches, dejaLa, deplaces? }
NoteTout ou rien. Un accès se range sur UN projet à la fois : sans `deplacer`, 409 `ACCES_SUR_UN_AUTRE_PROJET` qui nomme l’accès et son projet. Un compte personnel ne se rattache jamais (409). Rien n’est copié : c’est `AgencyCredential.projectId`. Journal `acces.rattache-projet`.
DELETE
/projects/:id/acces-rattaches/:credentialId
Détache un accès du projet sans le supprimer : il reste au coffre de l’entreprise, avec ses autres rattachements.
Réponse{ ok }
Note409 tant qu’un connecteur du projet est branché sur cet accès. Journal `acces.detache-projet`.
GET
/projects/:id/env
Les lignes « variable d’environnement » d’un projet AVEC leurs valeurs, pour fabriquer le .env d’un poste. Développement ou préproduction seulement : la production ne descend jamais sur un poste. Une seule révélation, journalisée une fois avec la liste des noms.
Requêteenvironment (DEVELOPMENT, STAGING)
RéponseEnvLignesDto