Aller au contenu

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.

Corpstoken
Réponse{ ok }
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.

Corpsemail
Réponse{ ok }
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.

Réponse{ ok }
GET /portail/session sans authentification

Qui je suis, chez quel client, et quels sites je peux désigner.

RéponsePortailSessionDto
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.

Réponsetext/event-stream
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.

Réponseimage
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.

Réponseimage
GET /portail/acces sans authentification

Les accès du coffre que l’agence a choisi de montrer au client (`showOnPortal`).

RéponsePortailAccesDto[]
GET /portail/acces/:id/secret sans authentification

Le secret d’un accès montré. Journalisé nominativement, plafonné par heure.

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

Réponseimage
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.

RéponsePortailDocPageDto
GET /portail/documentation/images/:imageId sans authentification

Une capture d’écran d’une page de documentation.

Réponseimage
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.

Réponseimage
POST /portail/publicite/:id/vue sans authentification

Compte une vue de l’encart — une par compte et par heure.

Réponse{ ok }
POST /portail/publicite/:id/clic sans authentification

Compte un clic sur l’encart, nominativement.

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

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

RéponseDossierClientDto
DELETE /dossiers-client/:id

Révoque un dossier client : son lien cesse de s’ouvrir et ses documents sont effacés ; le suivi reste.

RéponseDossierClientDto