> ## Documentation Index
> Fetch the complete documentation index at: https://docs.locusmedical.fr/llms.txt
> Use this file to discover all available pages before exploring further.

# feedback

> POST /v2/feedback — attacher un pouce à une réponse déjà servie.

Chaque réponse servie laisse une trace, avec son `trace_id`, la version de core
qui l'a produite et la version de l'app qui l'a demandée. Cette route est le
seul chemin qui vient y poser un pouce.

Pourquoi une route à part, et non un champ de plus sur `/v2/retrieve` : le vote
arrive **après** la réponse, parfois longtemps après — l'utilisateur lit, puis
juge — et parfois jamais. C'est un autre geste, avec sa propre durée de vie.

```json theme={null}
{
  "trace_id": "…",       // rendu par /v2/retrieve, ou par la ligne `done` du flux
  "vote": 1,             //  1 pouce levé · -1 pouce baissé · 0 vote retiré
  "note": "trop long"    // facultatif, 2 000 caractères max
}
```

`vote: 0` existe pour que **se dédire soit un geste écrit comme un autre**. Sans
lui, retirer un pouce obligerait à supprimer la ligne — et on perdrait la
réponse tracée en même temps que l'avis.

## Idempotent

Re-poster écrase le vote précédent. C'est ce qui permet à l'utilisateur de
changer d'avis, et à un client de re-tenter un envoi perdu **sans compter deux
fois**.

## Écriture synchrone

Contrairement à la trace elle-même, l'écriture est synchrone : accuser réception
d'un vote qu'on n'a pas écrit serait mentir à l'utilisateur qui vient de cliquer.

## Erreurs

| Statut | Code                   | Signification                                                                                |
| ------ | ---------------------- | -------------------------------------------------------------------------------------------- |
| 404    | `TRACE_NOT_FOUND`      | `trace_id` inconnu — réponse servie journalisation coupée, ou plus vieille que la rétention. |
| 503    | `TRACES_DISABLED`      | La journalisation est désactivée sur cette instance : il n'y a aucune trace à noter.         |
| 503    | `FEEDBACK_UNAVAILABLE` | La base n'a pas pu écrire.                                                                   |

<Note>
  Quand `trace_id` revient vide dans une réponse, la journalisation est coupée :
  ne proposez alors pas le retour dans l'interface, plutôt que de poster dans le
  vide.
</Note>
