Aller au contenu

Infrastructure (fournisseurs)

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

GET /providers

Le catalogue des fournisseurs pilotables : capacités, limites assumées, plafond d’appels, et où trouver la clé.

RéponseProviderCatalogDto[]
GET /provider-connections Owner et Admin

Les comptes enregistrés chez les fournisseurs, avec leur voyant et leurs décomptes.

RéponseProviderConnectionDto[]
NoteLa clé d’API du fournisseur ne sort jamais : seuls un booléen et le préfixe public de la clé sont rendus.
GET /provider-connections/:id Owner et Admin

Un compte chez un fournisseur.

RéponseProviderConnectionDto
POST /provider-connections Owner et Admin session de l’application seulement

Enregistre un compte chez un fournisseur, après un essai réel de la clé.

Corpsprovider (IONOS, CLOUDFLARE, OVHCLOUD, INFOMANIAK, HOSTINGER, O2SWITCH, VERCEL, NETLIFY), label, notes, customerNumber, contractNumber, tenantId, credentials { apiKey, champs? } — champs : ceux que GET /providers déclare pour ce fournisseur
RéponseProviderConnectionDto
NoteUn essai raté n’empêche pas d’enregistrer : le compte est créé avec le voyant rouge et le motif. Doublon de (fournisseur, nom) : 409.
PATCH /provider-connections/:id Owner et Admin session de l’application seulement

Modifie un compte. La clé n’est remplacée que si « credentials » est présent.

Corpslabel, notes, customerNumber, contractNumber, tenantId, active, credentials { apiKey }
RéponseProviderConnectionDto
NoteLe fournisseur ne se change jamais. Remplacer la clé remet le voyant à « jamais relevé ».
DELETE /provider-connections/:id Owner et Admin session de l’application seulement

Retire un compte, ses ressources et leurs rattachements.

Requêteforce (1 pour confirmer malgré des rattachements existants)
NoteSans « force », 409 avec le nombre de rattachements. Les changements déjà journalisés survivent.
POST /provider-connections/test Owner et Admin session de l’application seulement

Essaie une clé AVANT de l’enregistrer : rien n’est écrit en base.

Corpsprovider, tenantId, credentials { apiKey }
RéponseProviderTestResultDto
NoteVingt essais par minute : chaque essai consomme trois appels du plafond horaire du compte.
POST /provider-connections/:id/test Owner et Admin

Essaie la clé d’un compte enregistré et écrit son voyant.

RéponseProviderTestResultDto
POST /provider-connections/:id/sync Owner et Admin

Lance un relevé du compte. Le travail se fait en fond ; la fiche du relevé revient tout de suite.

RéponseProviderSyncRunDto
NoteSix par minute : un relevé complet coûte des dizaines d’appels sur un plafond horaire partagé.
GET /provider-connections/:id/sync-runs Owner et Admin

Les derniers relevés d’un compte, du plus récent au plus ancien.

Requêtelimit (1 à 100, défaut 20)
RéponseProviderSyncRunDto[]
GET /provider-sync-runs/:id Owner et Admin

Le bilan d’un relevé : ce qu’il a découvert, mis à jour, retiré, proposé.

RéponseProviderSyncRunDto
GET /provider-resources

L’inventaire chez les fournisseurs : domaines, zones DNS et certificats que je vois.

RequêteconnectionId, kind (DOMAIN, DNS_ZONE, SSL_CERTIFICATE), siteId, serverId, clientId, projectId, unbound (rattaché à rien), removed (inclure les disparues), q (nom ou domaine), page, size (1 à 200, défaut 50)
Réponse{ total, resources: ProviderResourceDto[] }
NoteUne ressource rattachée à rien n’est visible que des administrateurs.
GET /provider-resources/:id

Une ressource, avec sa fiche relevée et les capacités de son compte.

RéponseProviderResourceDetailDto
POST /provider-resources/:id/refresh Owner et Admin

Relit cette ressource chez le fournisseur, sans relancer un relevé complet.

RéponseProviderResourceDetailDto
GET /provider-resources/:id/deploiements

Les derniers déploiements d’un projet hébergé (Vercel, Netlify), LUS à l’instant chez la plateforme — jamais stockés. 409 sur une autre nature de ressource.

RéponseDeploiementsDto
PUT /provider-resources/:id/bindings Owner et Admin

Remplace les rattachements d’une ressource au parc (site, machine, client, projet).

Corpsbindings (liste de { siteId } | { serverId } | { clientId } | { projectId })
RéponseProviderResourceDetailDto
NoteLa liste remplace l’existante : un ajout incrémental ferait s’écraser deux administrateurs sans qu’ils le voient.
GET /provider-bindings/suggestions Owner et Admin

Les rattachements que Nexus propose sans les avoir posés, du plus sûr au moins sûr.

RequêteconnectionId, limit (1 à 200, défaut 50)
RéponseBindingSuggestionDto[]
POST /provider-bindings/suggestions/:id/accept Owner et Admin

Accepte une proposition et pose le rattachement.

Réponse{ ok, bindingId }
POST /provider-bindings/suggestions/:id/dismiss Owner et Admin

Écarte une proposition : elle ne reviendra plus.

Réponse{ ok }
GET /infrastructure/overview

L’infrastructure d’un objet du parc en une réponse : ses ressources, ce que Nexus sait sans fournisseur, ses propositions en attente.

RequêtetargetType (site, server, client, project), targetId
RéponseInfrastructureOverviewDto
NoteUne seule route pour la fiche entière : trente appels un par un heurteraient le plafond de débit avant d’avoir peint l’écran.
GET /provider-resources/:id/dns

Les enregistrements d’une zone, lus chez le fournisseur à l’instant de l’appel.

Requêterefresh (1 pour rafraîchir aussi la fiche de la ressource)
RéponseDnsZoneDto
NoteNexus ne cache aucun enregistrement : « readAt » dit l’instant de la lecture. 409 si la ressource n’est pas une zone DNS. Plafonné à 30 appels par minute et par appelant.
POST /provider-resources/:id/dns/plan

Calcule l’aperçu d’un changement DNS. N’écrit rien chez le fournisseur.

Corpsmode (GROUPE par défaut, ou ENSEMBLE), records (liste de { name, type, content, ttl, prio, disabled }), supprimer (liste de { name, type } à vider)
RéponseDnsPlanDto
NoteGROUPE ne touche que les couples (nom, type) cités. L’aperçu porte le niveau de risque et l’empreinte à renvoyer à l’application. Plafonné à 20 appels par minute et par appelant.
POST /provider-resources/:id/dns/apply

Applique un aperçu déjà calculé, opération par opération.

CorpschangeId, planHash, idempotencyKey, confirm
RéponseInfrastructureChangeDto
NoteDix par minute. 409 si la zone a bougé depuis l’aperçu. Dès un risque élevé (MX, SPF, DNSSEC, délégation), une clé d’API planifie mais n’applique pas.
GET /provider-resources/:id/dns/snapshots

Les clichés d’une zone : ce qu’elle contenait, et quand.

Requêtelimit (1 à 100, défaut 20)
RéponseDnsSnapshotDto[]
POST /provider-resources/:id/dns/snapshots

Prend un cliché de la zone maintenant, avant d’y toucher depuis ailleurs.

Corpsreason (motif court, défaut MANUEL)
RéponseDnsSnapshotDto
GET /dns-snapshots/:id

Le contenu d’un cliché, enregistrement par enregistrement.

RéponseDnsSnapshotDetailDto
GET /provider-resources/:id/domain

La fiche d’un domaine : échéance, verrous, serveurs de noms, ce qui n’a pas pu être lu.

RéponseDomainDetailDto
GET /provider-resources/:id/domain/contacts Owner et Admin session de l’application seulement

Les contacts d’un domaine : titulaire, administratif, technique.

RéponseDomainContactsDto
NoteDonnées nominatives : réponse en « no-store », jamais mise en cache et jamais conservée par Nexus.
GET /provider-resources/:id/domain/dnssec Owner et Admin

L’état DNSSEC d’un domaine, et si l’écriture est possible.

RéponseDnssecDto
PUT /provider-resources/:id/domain/dnssec Owner et Admin session de l’application seulement

Modifie la chaîne DNSSEC d’un domaine. Confirmation obligatoire.

CorpsdsData (liste de { keyTag, alg, digestType, digest }), keyData (liste de { flags, protocol, alg, pubKey }), confirm
RéponseInfrastructureChangeDto
NoteUne chaîne fausse rend le domaine irrésoluble pour tous les résolveurs qui valident, et le rétablir suit le temps de propagation du registre.
GET /provider-connections/:id/ssl/quota Owner et Admin

Le quota de certificats du contrat : combien sont posés, combien restent.

RéponseSslQuotaDto
GET /provider-resources/:id/ssl Owner et Admin

La fiche d’un certificat, avec son jeton de validation quand il en attend un.

RéponseSslCertificateDto
POST /provider-connections/:id/ssl/certificates Owner et Admin session de l’application seulement

Commande un certificat sur ce compte et l’ajoute à l’inventaire.

CorpscertificateType, commonName, alternativeNames, csr, authenticationMethod (DNS, FILE, EMAIL)
RéponseProviderResourceDetailDto
NoteCinq par minute : une commande consomme un créneau du contrat, et un créneau consommé ne se rend pas.
POST /provider-resources/:id/ssl/dcv-ready Owner et Admin

Annonce à l’autorité que la validation de domaine est en place.

Réponse{ ok, status }
NoteSans ce signal, un certificat dont le jeton est posé reste en attente indéfiniment. 409 s’il n’attend aucune validation.
DELETE /provider-resources/:id/ssl Owner et Admin session de l’application seulement

Désassigne un certificat et libère son créneau de contrat.

Réponse{ ok }
NoteDésassignation, jamais révocation : le certificat installé continue de servir jusqu’à son échéance.
GET /infrastructure-changes

Le journal de ce qu’on a changé chez les hébergeurs, du plus récent au plus ancien.

RequêteconnectionId, resourceId, siteId, status (PLANNED, APPLIED, PARTIAL, FAILED, REVERTED), risk (LOW, MEDIUM, HIGH, CRITICAL), limit (1 à 100, défaut 30), cursor
Réponse{ changes: InfrastructureChangeDto[], nextCursor }
GET /infrastructure-changes/:id

Un changement, avec ses opérations, leur verdict et l’état d’avant.

RéponseInfrastructureChangeDetailDto
POST /infrastructure-changes/:id/revert/plan Owner et Admin

Calcule l’aperçu qui remettrait la zone dans l’état de son cliché.

RéponseDnsPlanDto
NoteMode ENSEMBLE, donc toujours critique : tout ce qui a été ajouté depuis apparaît en suppression, et c’est à un humain de trancher.
POST /infrastructure-changes/:id/revert Owner et Admin session de l’application seulement

Applique la restauration, et marque le changement d’origine comme défait.

CorpschangeId (l’aperçu de restauration), planHash, idempotencyKey, confirm
RéponseInfrastructureChangeDto
Note409 si l’aperçu envoyé ne restaure pas ce changement-là.