# API Parlementaires, Députés & Sénateurs

Les trois préfixes servent les mêmes routes sur la même table : `/parlementaires` couvre les deux chambres, `/deputes` et `/senateurs` sont restreints à l'une d'elles. Une personne passée par les deux chambres n'a qu'une fiche (voir [Modèle Prisma](/donnees/modele-prisma)).

---

## 👥 Routes principales

| Méthode | Route | Description |
| :--- | :--- | :--- |
| `GET` | `/api/v1/parlementaires` | Liste paginée des parlementaires (Assemblée et Sénat) |
| `GET` | `/api/v1/deputes` | Même liste, restreinte aux députés |
| `GET` | `/api/v1/senateurs` | Même liste, restreinte aux sénateurs |
| `GET` | `/api/v1/parlementaires/:slug` | Fiche d'un parlementaire : identité, mandats, statistiques, fiche IA. `fonctionsGouvernementales` liste ses postes ministériels et sa présidence de la République, s'il en a (voir `/gouvernements`) ; ils ne figurent pas dans `mandats` |
| `GET` | `/api/v1/parlementaires/:slug/votes` | Votes du parlementaire, filtrables |
| `GET` | `/api/v1/parlementaires/:slug/amendements` | Amendements déposés et cosignés |
| `GET` | `/api/v1/parlementaires/:slug/interventions` | Prises de parole en séance et en commission |
| `GET` | `/api/v1/parlementaires/compare?slugs=a,b` | Comparaison de 2 à 4 parlementaires par leurs statistiques |

Toutes les routes, avec leurs schémas de réponse : [explorateur de l'API](/api).

---

## 🏛️ Filtres de la liste

| Paramètre | Effet |
| :--- | :--- |
| `page`, `limit` | Pagination (`limit` jusqu'à 200, 20 par défaut) |
| `chambre` | `assemblee` ou `senat` |
| `groupe` | Slug du groupe politique |
| `departement` | Numéro de département (`78`, `2A`, `974`…) |
| `search` | Recherche sur le nom et le prénom |
| `actif` | `true` (en exercice, par défaut) ou `false` |
| `legislature` | Députés ayant siégé sous cette législature (15, 16 ou 17) ; renvoie le groupe et la circonscription de cette période |
| `session` | Sénateurs ayant siégé pendant cette session (`2024-2025`) ; renvoie le groupe et la circonscription de la période |
| `sort` | `nom` (par défaut), `prenom`, `presence`, `loyaute`, `activite`, `amendements`, `interventions` |
| `order` | `asc` (par défaut) ou `desc` |
| `periode` | Statistiques servant au tri et renvoyées dans `stats` : `mandat` (mandat en cours, par défaut) ou `carriere` (tous mandats cumulés, les chiffres de la fiche ; avantage mécaniquement les réélus) |

**Présence au Sénat.** Un scrutin ordinaire du Sénat se vote par groupe : un délégué dépose les bulletins de tous les membres, présents ou non. Le taux sur tous les scrutins (`stats.presence`) y est donc une participation, pas une présence. La présence d'un sénateur est `stats.presenceSolennel` : la part des scrutins solennels où il a voté en personne (un vote confié à un collègue compte comme une absence). Le président du Sénat, le président de séance et les membres du gouvernement, qui ne votent pas, sont hors calcul ; `presence` vaut `null` quand il ne reste aucun scrutin (président du Sénat). En conséquence, `sort=presence` trie les sénateurs sur `presenceSolennel`, et sans `chambre` ne classe que les députés.

Dans `stats`, `presence` et `loyaute` valent `null` quand il n'y a rien à évaluer : aucun scrutin où l'élu pouvait voter (président de l'assemblée, mandat passé au Gouvernement), ou aucun vote exprimé au sein d'un groupe. Ce n'est pas 0 %. Les scrutins tenus pendant un poste ministériel de la personne, ou pendant sa présidence de l'Assemblée, sortent aussi de sa présence, même quand la source du scrutin ne la marque pas. Dans `mandats`, la présidence d'une assemblée figure comme une fonction du mandat (`typeOrgane` `BUREAU`). Triées sur ces taux, les valeurs `null` passent en fin de liste dans les deux sens. Un taux calculé sur moins de 50 scrutins (`stats.scrutins` ; `stats.classable` vaut `false` dans les listes) passe aussi après les autres : il ne se compare pas à celui d'un élu noté sur des milliers de scrutins, et la fiche le montre avec son nombre de scrutins. Ce seuil vaut pour la loyauté et la présence des députés, pas pour celle des sénateurs, mesurée sur les scrutins solennels, peu nombreux.

Les statistiques d'une fiche portent sur toute la carrière parlementaire, les deux chambres et tous les mandats cumulés, `presenceSolennel` comprise. Celles des listes et des classements portent sur le mandat en cours (`periode=mandat`). Pour un président d'assemblée en exercice, la présence solennelle de la fiche exclut ses présidences : c'est sa présence sur le reste de sa carrière.

---

## 🗳️ Votes d'un parlementaire

`GET /api/v1/parlementaires/:slug/votes` accepte `page`, `limit` (jusqu'à 100), `position` (`pour`, `contre`, `abstention`, `absent`), `tag`, `dateFrom`, `dateTo`, `dissidentOnly` (seulement les votes différents de la position majoritaire du groupe) et, pour une personne passée par les deux chambres, `chambre`. Le groupe d'un vote est celui du mandat à la date du scrutin, pas le groupe actuel.
