> ## 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.

# sources

> GET /v2/sources — les éditeurs sur lesquels un retrieving peut être restreint.

Chaque document du graphe vient d'un éditeur : la HAS, ebmfrance, … Cette route
publie la liste de ceux qui ont des documents **courants**, et donc les seules
valeurs que `POST /v2/retrieve` accepte dans `sources` et `exclude_sources`.

```json theme={null}
[
  { "id": "HAS", "name": "Haute Autorité de Santé", "docs": 412 },
  { "id": "ebmfrance", "name": "EBMFrance", "docs": 88 }
]
```

`docs` compte les documents courants de l'éditeur : c'est ce qui dit si
restreindre une question à cette source rendra quelque chose. Un éditeur dont
plus aucun document n'est actif **n'est pas listé** — le publier ferait accepter
une restriction qui ne peut répondre que vide.

## Restreindre une question

```json theme={null}
{ "query": "fièvre chez un enfant de 2 ans", "sources": ["HAS"] }
```

Les identifiants sont insensibles à la casse (`« has »` vaut `HAS`), mais rien
de plus : pas de correspondance approchée, pas de recherche sur le nom complet.
Une source inconnue est **refusée en 400** (`UNKNOWN_SOURCE`), avec la liste de
celles qui existent — servir une réponse vide ferait lire une faute de frappe
comme un trou du corpus.

Une liste **vide** est refusée elle aussi : « aucune source cochée » et « toutes
les sources » sont deux intentions opposées, et les confondre servirait le
corpus entier à un client qui croyait l'avoir restreint. Pour ne rien
restreindre, on omet le champ.

`exclude_sources` fait l'inverse — retirer un éditeur sans avoir à énumérer tous
les autres. La réponse porte `source_scope`, la restriction réellement appliquée
en identifiants canoniques.

## Ce que la restriction couvre

**Tous les chemins du graphe** : extraits, tables de décision, unités citables
retrouvées par concepts comme par vecteurs, et le voisinage entre unités — le
seul chemin qui saute d'un document à l'autre, donc le seul par lequel un
éditeur exclu pourrait revenir. La seconde lecture (`deliberate`) relance des
recherches : elles sont restreintes elles aussi.

Deux exceptions, délibérées :

* les **concepts** — un concept n'appartient à aucun document, c'est un terme du
  registre, partagé. Les unités citables qu'il ramène, elles, sont restreintes ;
* les **médicaments** — le sous-graph des RCP vient du référentiel ANSM, pas d'un
  éditeur de recommandations. Masquer une contre-indication parce qu'on a
  restreint le corpus de recommandations serait un mode d'erreur, pas une
  fonctionnalité.

<Note>
  Sur un éditeur très minoritaire, la recherche vectorielle peut rendre moins de
  `chunk_k` extraits : l'index vectoriel classe sur tout le corpus et le filtre
  s'applique ensuite. Le serveur sur-échantillonne pour compenser, mais la
  troncature reste possible — mieux vaut le savoir que le découvrir.
</Note>
