Entreprise
31 routes. Chemins relatifs à https://api.nexus-engine.eu/api/v1.
GET
/espace/facturation
session de l’application seulement
La facturation de l'espace au siège : état, sièges facturés / occupés / au renouvellement, option de stockage partagée, capacité, membres et leur couverture, paiements.
POST
/espace/facturation/souscrire
session de l’application seulement
Un administrateur ouvre la page de paiement de l'espace : 30 € HT × sièges occupés, option de stockage partagée.
Corpspack (index de PACKS_STOCKAGE_ESPACE, défaut 0)
POST
/espace/facturation/option
session de l’application seulement
Change l'option de stockage de l'espace (hausse facturée tout de suite, baisse au renouvellement).
POST
/espace/facturation/portail
session de l’application seulement
Ouvre le portail Stripe de l'espace.
POST
/espace/facturation/resilier
session de l’application seulement
Résilie la facturation de l'espace au terme payé.
POST
/espace/facturation/reprendre
session de l’application seulement
Annule la résiliation de l'espace.
PATCH
/espace/facturation/membres/:memberId
session de l’application seulement
Met un membre hors de la facturation de l'espace (il n'occupe plus de siège), ou l'y remet.
CorpshorsFacturation (booléen)
GET
/agency
La fiche de l’entreprise.
PUT
/agency
Owner et Admin
Modifie la fiche de l’entreprise.
Corpsname, logoUrl, emailDomain, address, postalCode, city, country, siren
RéponseAgencyDto
PATCH
/agency
Owner et Admin
Change un ou plusieurs champs de la fiche sans renvoyer les autres.
Corpsname, logoUrl, emailDomain, address, postalCode, city, country, siren (tous facultatifs)
RéponseAgencyDto
NoteNé pour nommer un espace aux premiers pas : le PUT exige toute la fiche, et un écran qui ne la lit pas l’aurait renvoyée vide.
PUT
/agency/logo
Owner et Admin
Importe un des deux logos de l’entreprise (noir pour les courriels, blanc pour le portail).
Corpsvariante (« noir » par défaut, ou « blanc »), mimeType (image/png, image/jpeg, image/webp), dataBase64
RéponseAgencyDto
NoteRaster seulement et deux méga-octets au plus : les clients de messagerie n’affichent pas le SVG, et servir du SVG depuis ce domaine ouvrirait une porte au script qu’il peut contenir. La signature du fichier est vérifiée, pas seulement son type annoncé.
GET
/agency/logo-integre
Le logo de l’entreprise en image intégrée (data:), pour l’application.
Requêtevariante : « noir » (défaut) ou « blanc »
Réponse{ dataUrl }
NoteLa fenêtre de Nexus tourne sous « img-src 'self' data: » : une adresse absolue vers l’API y est refusée en silence, et l’aperçu restait vide. L’adresse publique (/agences/:id/logo) garde son rôle : elle sert les clients de messagerie et le portail, hors de notre fenêtre. « dataUrl: null » quand aucun logo n’est déposé — ce n’est pas une erreur.
DELETE
/agency/logo
Owner et Admin
Retire un des deux logos importés. L’URL saisie à la main, s’il y en a une, reprend la main pour le noir.
Requêtevariante : « noir » (défaut) ou « blanc »
RéponseAgencyDto
PUT
/agency/favicon
Owner et Admin
Importe (ou remplace) le favicon de l’espace : l’icône carrée qui sert d’avatar à l’espace.
CorpsmimeType (image/png, image/jpeg, image/webp, image/svg+xml), dataBase64
Réponse{ faviconUrl, faviconMime }
Note512 ko au plus. La signature du fichier est vérifiée, et un SVG est inspecté (script, gestionnaires, foreignObject refusés). Distinct des deux logos : il se pose dans un carré — barre du haut, sélecteur d’espaces.
GET
/agency/favicon-integre
Le favicon de l’espace courant, en image intégrée (data:), pour l’aperçu d’Administration.
Réponse{ dataUrl }
Note« dataUrl: null » sans favicon — ce n’est pas une erreur.
DELETE
/agency/favicon
Owner et Admin
Retire le favicon de l’espace : l’avatar retombe sur le logo, puis sur les initiales.
Réponse{ faviconUrl, faviconMime }
GET
/agences/:id/favicon
sans authentification
Le favicon d’une entreprise, en image. Sans authentification.
NoteMêmes en-têtes que le logo public (CSP fermée, nosniff, cache d’une heure). Une entreprise sans favicon répond 404 comme une adresse inconnue.
GET
/agences/:id/logo
sans authentification
Le logo d’une entreprise, en image. Sans authentification.
Requêtevariante : « noir » (défaut, fond clair) ou « blanc » (fond sombre)
NotePublic par nécessité : un client de messagerie ouvre l’image depuis la boîte du destinataire, sans session. Un logo n’est pas un secret ; une entreprise sans logo répond 404 comme une adresse inconnue. DEUX logos : le noir part dans les courriels, le blanc s’affiche sur le portail client — un logo est dessiné POUR un fond, et on ne se rabat jamais sur l’autre (ce serait un rectangle vide).
GET
/agency/google
Le projet Google Cloud de l’entreprise (Drive) — lecture ouverte à tout membre, secret compris : le poste en a besoin pour mener le flux OAuth, et ces valeurs étaient jusqu’ici embarquées dans un installeur téléchargeable par n’importe qui.
RéponseclientId, clientSecret, apiKey, projectNumber
PUT
/agency/google
Owner et Admin
Enregistre le projet Google Cloud de l’entreprise. Un champ absent ne touche à rien, un champ vide efface. Le secret est chiffré au repos.
CorpsclientId, clientSecret, apiKey, projectNumber (tous facultatifs)
Réponse{ ok }
GET
/agency/microsoft
Le client Microsoft (Entra ID) de l’entreprise, prêté aux applications de base pour relier Outlook / Microsoft 365 — un client public, sans secret : lecture ouverte à tout membre.
PUT
/agency/microsoft
Owner et Admin
Enregistre le client Microsoft de l’entreprise (« ID d’application (client) » d’Entra ID). Absent : rien ne change ; vide : efface, le poste revient à celui de sa construction.
CorpsclientId
Réponse{ ok }
GET
/agency/listes-reputation
Owner et Admin
Les clés des deux listes publiques (Google Safe Browsing, URLhaus) : leur PRÉSENCE, jamais leur valeur, et si elles viennent de l’environnement du serveur.
RéponseListesReputationDto
PUT
/agency/listes-reputation
Owner et Admin
Pose ou retire les clés des deux listes publiques. Un champ absent ne touche à rien, un champ vide efface. Chiffrées au repos, jamais relues par aucune route.
CorpssafeBrowsingKey, urlhausKey (facultatifs)
Réponse{ ok }
PATCH
/agency/retention
Owner et Admin
Durée de conservation des conversations et pièces jointes.
CorpsretentionDays (7 à 3650, ou null = tout garder)
RéponseAgencyDto
PATCH
/agency/dev-access
Owner et Admin session de l’application seulement
Ouvrir tout le parc — sites, serveurs, coffre — aux développeurs.
CorpsdevsSeeAllAssets (booléen)
RéponseAgencyDto
PATCH
/agency/preprod
Owner et Admin session de l’application seulement
Le domaine sous lequel naissent les préproductions (preprod.agence.fr) et la zone DNS d’un compte relié où Nexus les écrit.
CorpspreprodDomain (nom d’hôte ou null), preprodZoneResourceId (ressource DNS_ZONE de l’entreprise, ou null)
RéponseAgencyDto
Note404 si la zone n’est pas une zone DNS d’un compte relié de l’entreprise ; 409 si le domaine ne vit pas dans cette zone ; 400 pour une zone sans domaine.
GET
/task-states
Les états de tâche définis par l’entreprise.
Réponse{ states: TaskStateDto[] }
PUT
/task-states
Owner et Admin
Remplace la liste des états de tâche (au moins un de catégorie DONE).
Corpsstates : liste de {key, label, category (TODO, IN_PROGRESS, IN_REVIEW, DONE), color}
Réponse{ states: TaskStateDto[] }
GET
/surveillance-settings
Machine témoin, délai d’escalade, crochet de messagerie.
RéponseSurveillanceSettingsDto
NoteL’adresse du crochet ne sort JAMAIS : `alertWebhookHint` en montre l’hôte et six caractères.
PATCH
/surveillance-settings
Désigne la machine témoin, règle l’escalade, pose ou retire le crochet.
CorpswitnessServerId, escalationMinutes, alertWebhookUrl
NoteAdministrateurs seulement. L’adresse du crochet est chiffrée au repos et n’entre jamais dans le journal d’audit.