---
title: "#1958 - complétude corrigée À LA VOLÉE côté serveur. Avant ce correctif, rien ne posait JAMAIS `onboarding_completed_at` (colonne dédiée lue par getProgress()/isComplete côté front) : `completeStep()` (useOnboarding.ts) ne mettait à jour qu'un état RÉACTIF local (`state.completedAt`, jamais envoyé au serveur), perdu au moindre rechargement complet."
method: POST
path: "/api/onboarding/complete"
tags: ["Divers"]
---

# #1958 - complétude corrigée À LA VOLÉE côté serveur. Avant ce correctif, rien ne posait JAMAIS \`onboarding_completed_at\` (colonne dédiée lue par getProgress()/isComplete côté front) : \`completeStep()\` (useOnboarding.ts) ne mettait à jour qu'un état RÉACTIF local (\`state.completedAt\`, jamais envoyé au serveur), perdu au moindre rechargement complet.

`POST /api/onboarding/complete`

## Request

- Base URL: `https://lucidnest.test`
- URL: `https://lucidnest.test/api/onboarding/complete`
- Auth: HTTP bearer

Un tenant ayant fini les 8 étapes restait donc "incomplet" pour toujours aux yeux du
serveur, et la popup de reprise pouvait resurgir indéfiniment. Appelée par
useOnboarding.ts dès que le CLIENT (seul à connaître la liste des étapes réellement
actives - dépend de feature_overrides, ex. `quotes`) détecte que `completed` couvre la
totalité de `steps.value` : même niveau de confiance client que dismiss()/reset(), déjà
entièrement pilotés par le front sans validation serveur du contenu.

---

[API](https://skmtc.dev/lucidnest/apis/lucidnest-api-documentation.md) · [All operations](https://skmtc.dev/lucidnest/apis/lucidnest-api-documentation/llms.txt) · [OpenAPI document](https://skmtc.dev/lucidnest/apis/lucidnest-api-documentation/revisions/38638944c947?raw)
