Portail client
54 routes. Chemins relatifs à https://api.nexus-engine.eu/api/v1.
GET
/portail/jeton/:token
sans authentification
Ce que vaut un lien de mot de passe, avant d’afficher le formulaire.
RéponsePortailTokenCheckDto
POST
/portail/passage
sans authentification
Échange un passage remis par le compte Nexus de la même adresse contre une session de portail (courte). Le jeton ne sert qu’une fois.
POST
/portail/mot-de-passe
sans authentification
Pose le mot de passe d’un interlocuteur — première fois comme reprise.
Corpstoken, password
Réponse{ ok }
POST
/portail/mot-de-passe/oubli
sans authentification
Demande un lien de réinitialisation. Répond la même chose pour une adresse inconnue.
POST
/portail/login
sans authentification
Ouvre une session d’interlocuteur client. Cookie distinct de celui de l’agence.
Corpsemail, password, remember
Réponse{ ok }
NoteUne adresse peut désigner un compte par entreprise : c’est le mot de passe qui départage. 409 quand plusieurs espaces répondent au même mot de passe — réinitialiser l’un d’eux (« mot de passe oublié », un courriel par espace, chacun nommant son entreprise). Une entreprise suspendue répond 401 comme un mot de passe faux.
POST
/portail/logout
sans authentification
Ferme la session du portail.
GET
/portail/session
sans authentification
Qui je suis, chez quel client, et quels sites je peux désigner.
GET
/portail/demandes
sans authentification
Toutes les demandes du client — pas seulement les miennes.
RéponsePortailTicketDto[]
POST
/portail/demandes
sans authentification
Dépose une demande. Ceux qui ont la charge du site sont prévenus.
CorpssiteId, body, urls, attachments
RéponsePortailTicketDetailDto
GET
/portail/demandes/:id
sans authentification
Une demande et son fil, sans aucun champ interne.
RéponsePortailTicketDetailDto
POST
/portail/demandes/:id/messages
sans authentification
Répond dans le fil, avec adresses et pièces jointes.
Corpsbody, urls, attachments, replyToId
RéponsePortailTicketDetailDto
POST
/portail/demandes/:id/messages/:messageId/reactions
sans authentification
Pose ou retire une réaction sur un message du fil.
Corpsemoji
RéponsePortailTicketDetailDto
GET
/portail/flux
sans authentification
Flux d’événements (SSE) du portail : « une demande a bougé », « la cloche a du neuf ». Ne porte aucune donnée.
GET
/portail/portraits/:messageId
sans authentification
Le portrait de l’auteur d’un message du fil, sans nommer son compte. 404 quand il n’en a pas.
POST
/portail/demandes/:id/contestation
sans authentification
Conteste une clôture : la demande repart chez l’agence.
Corpsbody, urls, attachments
RéponsePortailTicketDetailDto
GET
/portail/demandes/:id/pieces/:pieceId
sans authentification
Le contenu d’une pièce jointe du fil, en base64.
Réponse{ name, mimeType, dataBase64 }
GET
/portail/rapports
sans authentification
Les rapports de maintenance envoyés aux clients du compte, du plus récent au plus ancien, bornés par `from` et `to` (AAAA-MM-JJ).
Requêtefrom, to
Réponse{ id, title, period, periodStart, periodEnd, sentAt, token, clientId, clientName }[]
GET
/portail/rapports/export
sans authentification
Plusieurs rapports en une page imprimable (« exporter en PDF » par l’impression du navigateur).
Requêteids (séparés par des virgules)
Réponsetext/html
PATCH
/portail/demandes/:id
sans authentification
Réécrit la demande (premier message du fil) tant qu’elle n’est ni terminée ni refusée ; la tâche née de la demande reçoit le nouveau texte, daté.
Corpsbody, urls, attachments
RéponsePortailTicketDetailDto
GET
/portail/discussion
sans authentification
Le flux de discussion du client : les derniers messages de toutes ses demandes, le plus récent en tête.
RequêtesiteId, limit
RéponseDiscussionMessageDto[]
GET
/portail/moi/notifications
sans authentification
Ce que le client reçoit par courriel : réponse, clôture, refus, rapport.
RéponsePortailNotificationPrefsDto
PUT
/portail/moi/notifications
sans authentification
Règle ce que le client reçoit par courriel. Les interrupteurs absents gardent leur valeur.
CorpsemailReply, emailDone, emailRefused, emailReport, emailCreation
RéponsePortailNotificationPrefsDto
PATCH
/portail/moi
sans authentification
Corrige son identité. Changer d’adresse exige le mot de passe courant.
CorpsfirstName, lastName, jobTitle, email, currentPassword
Réponse{ id, email, firstName, lastName, jobTitle, avatarUrl }
POST
/portail/moi/mot-de-passe
sans authentification
Change son mot de passe, connecté. Les autres sessions tombent.
CorpscurrentPassword, newPassword
Réponse{ ok }
GET
/portail/utilisateurs
sans authentification
Les personnes qui ont accès aux mêmes espaces que moi.
RéponsePortailUtilisateurDto[]
POST
/portail/utilisateurs
sans authentification
Invite un collègue : le courriel d’invitation part, signé du nom de qui invite. Une adresse déjà connue est rattachée.
Corpsemail, firstName, lastName, jobTitle, clientId
Réponse{ utilisateur: PortailUtilisateurDto, courrielEnvoye, rattache }
POST
/portail/utilisateurs/:id/invitation
sans authentification
Renvoie l’invitation d’un collègue qui n’a pas encore choisi son mot de passe.
Réponse{ courrielEnvoye }
GET
/portail/utilisateurs/:id/avatar
sans authentification
Le portrait d’un collègue, ou le sien.
GET
/portail/acces
sans authentification
Les accès du coffre que l’agence a choisi de montrer au client (`showOnPortal`).
GET
/portail/acces/:id/secret
sans authentification
Le secret d’un accès montré. Journalisé nominativement, plafonné par heure.
GET
/portail/studio
sans authentification
L’onglet « Studio » : les créations que l’agence a envoyées aux clients du compte, la plus récente en tête.
RéponsePortailCreationDto[] — l’identifiant est celui de l’ENVOI, jamais celui de la création
GET
/portail/studio/:sid
sans authentification
Une création envoyée, et les versions qu’on a envoyées au client (la plus récente en tête).
RéponsePortailCreationDetailDto
GET
/portail/studio/:sid/versions/:n/vignette
sans authentification
La vignette d’une version envoyée — jamais d’une autre.
GET
/portail/studio/:sid/versions/:n/fichier
sans authentification
Le fichier d’une version envoyée, toujours en pièce jointe.
Réponseoctets (application/octet-stream, attachment)
GET
/portail/studio/:sid/ouvrir
sans authentification
L’adresse de la page de consultation de la création (`/c`), où le client la voit et la commente. Repousse la fin du lien de trente jours.
Réponse{ url } — 409 quand le lien ne s’ouvre plus (l’agence doit renvoyer)
GET
/portail/documentation
sans authentification
Le sommaire des pages de documentation publiées pour les clients du compte.
RéponsePortailDocEntreeDto[]
GET
/portail/documentation/:slug
sans authentification
Une page de documentation, en markdown.
GET
/portail/documentation/images/:imageId
sans authentification
Une capture d’écran d’une page de documentation.
GET
/portail/notifications
sans authentification
La cloche du client : ce qui est arrivé à ses demandes, ses rapports, sa documentation.
Requêteunread, limit
Réponse{ items: PortailNotificationDto[], unread }
POST
/portail/notifications/lu
sans authentification
Marque lu : tout sans identifiants, ces lignes-là avec.
Corpsids
Réponse{ marked, unread }
GET
/portail/push
sans authentification
De quoi s’abonner aux alertes poussées : la clé publique du serveur, si le push est configuré.
Réponse{ disponible, cle, appareils }
POST
/portail/push
sans authentification
Abonne cet appareil aux alertes poussées du client.
Corpsendpoint, p256dh, auth
Réponse{ ok }
POST
/portail/push/oubli
sans authentification
Désabonne cet appareil.
Corpsendpoint
Réponse{ ok }
GET
/portail/publicite
sans authentification
La campagne de l’agence à afficher dans ce portail, s’il y en a une en cours.
RéponsePortailPubliciteDto | null
GET
/portail/publicite/:id/banniere
sans authentification
La bannière de la campagne en cours.
POST
/portail/publicite/:id/vue
sans authentification
Compte une vue de l’encart — une par compte et par heure.
POST
/portail/publicite/:id/clic
sans authentification
Compte un clic sur l’encart, nominativement.
POST
/portail/publicite/:id/fermer
sans authentification
La personne ferme l’encart : retenu pour ce compte, sur tous ses appareils, si la campagne n’est pas persistante.
POST
/dossiers-client
session de l’application seulement
Compose un DOSSIER pour un client : un titre, un texte, des documents à consulter (PDF, images) et une demande de signature, sur une page de Nexus sans compte. Rend son lien UNE fois.
Corpstitre, texte ?, documents ? ([{ nom, base64 }], 10 au plus, 10 Mo chacun), signature ? ({ procedureId, signataireId }), paiements ? ([{ libelle, montantCentimes, devise ?, echeance ? (AAAA-MM-JJ), reference ? }], 5 au plus), jours ? (30 par défaut, 90 au plus), requestId ?, applicationId ?
Réponse{ dossier: DossierClientDto, lien }
NoteUne PERSONNE en session : jamais une clé d’API ni un agent (403). La signature nommée doit être une demande ENVOYÉE, créée avec `invitation: "APPLICATION"`, et le signataire un tiers déjà invité (409 sinon) ; la remise de son lien est écrite au journal de la procédure. Le jeton n’est gardé qu’en empreinte : `lien` ne se relit pas (un `requestId` déjà vu rend le dossier avec `lien: null`). `paiements` : montants en CENTIMES (0,50 à 999 999,99), payés par Stripe Checkout sur le compte Connect de l’espace, SANS commission de Nexus ; refusé si le paiement en ligne est éteint (503 `PAIEMENTS_INACTIFS`) ou si le compte Stripe de l’espace n’est pas relié ou n’encaisse pas (409 `COMPTE_STRIPE_ABSENT`, `COMPTE_STRIPE_NON_PRET`).
POST
/dossiers-client/:id/paiements
session de l’application seulement
Ajoute des demandes de paiement à un dossier client ouvert (montant libre en centimes, devise, libellé, échéance), payées par le client sur la page du dossier.
Corpspaiements ([{ libelle, montantCentimes, devise ?, echeance ?, reference ? }], 5 au plus par dossier)
Réponse{ paiements: PaiementDeDossierDto[] }
NoteUne PERSONNE en session (403 à une clé ou un agent). Une `reference` déjà présente dans le dossier n’est pas recréée : l’ajout se rejoue. Compte Stripe Connect de l’espace prêt exigé (503/409 avec `code`). Dossier expiré ou révoqué : 409 `DOSSIER_FERME`.
DELETE
/dossiers-client/:id/paiements/:paiementId
Annule une demande de paiement non réglée d’un dossier client (la page Stripe ouverte est fermée d’abord).
RéponsePaiementDeDossierDto
NoteRéglée : 409 `DEJA_PAYE` (un remboursement se fait depuis le compte Stripe de l’espace). Le client vient de payer : 409 `PAIEMENT_EN_CONFIRMATION`.
GET
/dossiers-client
Les dossiers client de l’entreprise, avec leur suivi : vu (première ouverture, nombre de vues) et signé (relu sur la procédure).
Réponse{ dossiers: DossierClientDto[] }
GET
/dossiers-client/:id
Un dossier client et son suivi (vu, signé). Jamais son lien.
DELETE
/dossiers-client/:id
Révoque un dossier client : son lien cesse de s’ouvrir et ses documents sont effacés ; le suivi reste.