Aller au contenu

Accès des projets

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
DELETE /projects/:id/credentials/:credentialId session de l’application seulement

Supprime un accès.

GET /projects/:id/credentials/:credentialId/secret

Révèle le secret d’un accès : journalisé, plafonné à 30 par heure et par membre.

Réponse{ secret }
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