docs: ajoute la doc Swagger des mots-clés au spec parité API (#78)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -42,6 +42,8 @@ collision avec l'opérateur d'agrégation `count` de data.gouv.fr.
|
|||||||
2. Ajouter l'opérateur de filtre `differs`.
|
2. Ajouter l'opérateur de filtre `differs`.
|
||||||
3. Ajouter les opérateurs d'agrégation `groupby`, `count`, `sum`, `avg`,
|
3. Ajouter les opérateurs d'agrégation `groupby`, `count`, `sum`, `avg`,
|
||||||
`min`, `max`, avec la même forme de réponse que data.gouv.fr.
|
`min`, `max`, avec la même forme de réponse que data.gouv.fr.
|
||||||
|
4. **Documenter** chaque mot-clé dans le Swagger UI de l'API, de façon à
|
||||||
|
mettre en valeur les possibilités de l'API decp.info.
|
||||||
|
|
||||||
Non-objectifs : le paramètre `or` (grammaire récursive imbriquée), les
|
Non-objectifs : le paramètre `or` (grammaire récursive imbriquée), les
|
||||||
opérateurs `groupby`/agrégats appliqués via `or`, toute évolution du
|
opérateurs `groupby`/agrégats appliqués via `or`, toute évolution du
|
||||||
@@ -58,10 +60,9 @@ benchmark (sera traitée après).
|
|||||||
- Le mot `count` n'est donc plus réservé ; il est interprété comme
|
- Le mot `count` n'est donc plus réservé ; il est interprété comme
|
||||||
opérateur d'agrégation (section 3).
|
opérateur d'agrégation (section 3).
|
||||||
|
|
||||||
**Rupture de contrat assumée :** un client qui passait `count=false`
|
**Rupture de contrat :** un client qui passait `count=false` verra ce
|
||||||
verra ce paramètre ré-interprété. Acceptable : l'API est privée et
|
paramètre ré-interprété. Sans conséquence : l'API n'est pas encore en
|
||||||
l'objectif est explicitement la parité avec data.gouv.fr. À documenter
|
production, on peut donc itérer librement.
|
||||||
dans le message de commit.
|
|
||||||
|
|
||||||
### 2. Opérateur `differs`
|
### 2. Opérateur `differs`
|
||||||
|
|
||||||
@@ -152,6 +153,33 @@ else:
|
|||||||
<chemin existant>
|
<chemin existant>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 4. Documentation (Swagger UI)
|
||||||
|
|
||||||
|
La doc de l'API est générée par flask-smorest et exposée sur
|
||||||
|
`/api/v1/swagger`, pilotée par le docstring de `routes.data()` et le bloc
|
||||||
|
`@bp.doc(parameters=[...])`. C'est la surface de documentation à enrichir
|
||||||
|
(aucune autre page de doc API n'existe).
|
||||||
|
|
||||||
|
À mettre à jour :
|
||||||
|
|
||||||
|
- Remplacer le paramètre `count` par `count_results` (même description).
|
||||||
|
- Étendre la description du paramètre dynamique `<colonne>__<opérateur>`
|
||||||
|
avec une **définition d'une ligne par opérateur**, regroupés par
|
||||||
|
catégorie :
|
||||||
|
- _Filtres_ : `exact`, `differs`, `contains`, `notcontains`, `in`,
|
||||||
|
`notin`, `less`, `greater`, `strictly_less`, `strictly_greater`,
|
||||||
|
`isnull`, `isnotnull`, `sort`.
|
||||||
|
- _Agrégation_ (drapeaux sans valeur) : `groupby`, `count`, `sum`,
|
||||||
|
`avg`, `min`, `max`.
|
||||||
|
- Décrire le **mode agrégation** : drapeaux sans valeur, réponse en lignes
|
||||||
|
groupées, colonnes `col__op`, `columns` interdit, pas de `total`.
|
||||||
|
- Mettre à jour le docstring de `data()` (visible dans Swagger) en
|
||||||
|
cohérence, avec au moins un exemple de requête d'agrégation.
|
||||||
|
|
||||||
|
Objectif éditorial : un lecteur qui découvre l'API doit comprendre, depuis
|
||||||
|
le seul Swagger UI, l'ensemble des opérateurs disponibles et comment s'en
|
||||||
|
servir.
|
||||||
|
|
||||||
### Sécurité SQL
|
### Sécurité SQL
|
||||||
|
|
||||||
Les noms de colonnes proviennent du schéma DuckDB validé (`col in schema`),
|
Les noms de colonnes proviennent du schéma DuckDB validé (`col in schema`),
|
||||||
@@ -176,6 +204,9 @@ Nouveaux tests (`tests/` API) :
|
|||||||
- `columns` + agrégation : 400.
|
- `columns` + agrégation : 400.
|
||||||
- `count_results=false` : réponse sans `total` (chemin non-agrégé).
|
- `count_results=false` : réponse sans `total` (chemin non-agrégé).
|
||||||
- non-régression : opérateurs existants inchangés.
|
- non-régression : opérateurs existants inchangés.
|
||||||
|
- doc : le spec OpenAPI généré (`/api/v1/openapi.json`) référence
|
||||||
|
`count_results` et mentionne les nouveaux opérateurs (vérif légère, p. ex.
|
||||||
|
présence des chaînes attendues).
|
||||||
|
|
||||||
Comparaison de référence : pour quelques requêtes, les valeurs agrégées
|
Comparaison de référence : pour quelques requêtes, les valeurs agrégées
|
||||||
doivent correspondre à celles renvoyées par data.gouv.fr sur la même
|
doivent correspondre à celles renvoyées par data.gouv.fr sur la même
|
||||||
|
|||||||
Reference in New Issue
Block a user