Plus d'options dans swagger UI pour Try it out #78

This commit is contained in:
Colin Maudry
2026-06-16 11:06:46 +02:00
parent d591d7f47a
commit fede22f314
2 changed files with 49 additions and 0 deletions
+8
View File
@@ -15,6 +15,14 @@ def init_api(server) -> None:
"OPENAPI_SWAGGER_UI_URL",
"https://cdn.jsdelivr.net/npm/swagger-ui-dist/",
)
server.config.setdefault(
"API_SPEC_OPTIONS",
{
"components": {
"securitySchemes": {"BearerAuth": {"type": "http", "scheme": "bearer"}}
}
},
)
api = Api(server)
api.register_blueprint(routes.bp)
+41
View File
@@ -85,6 +85,7 @@ def health():
@bp.route("/schema")
@bp.doc(security=[{"BearerAuth": []}])
@require_token
def schema():
"""Liste des colonnes disponibles dans le dataset DECP."""
@@ -93,6 +94,46 @@ def schema():
@bp.route("/data")
@bp.doc(
security=[{"BearerAuth": []}],
parameters=[
{
"name": "page",
"in": "query",
"schema": {"type": "integer", "default": 1, "minimum": 1},
"description": "Numéro de page (commence à 1).",
},
{
"name": "page_size",
"in": "query",
"schema": {"type": "integer", "default": 50, "minimum": 1, "maximum": 1000},
"description": "Nombre de résultats par page (max 1000).",
},
{
"name": "columns",
"in": "query",
"schema": {"type": "string"},
"description": "Liste de colonnes à retourner, séparées par des virgules (ex: `id,acheteur_id,montant`). Par défaut : toutes.",
},
{
"name": "count",
"in": "query",
"schema": {"type": "string", "enum": ["true", "false"], "default": "true"},
"description": "Inclure le total (`COUNT(*)`) dans la réponse. Mettre `false` pour accélérer la requête.",
},
{
"name": "<colonne>__<opérateur>",
"in": "query",
"schema": {"type": "string"},
"description": (
"Filtre dynamique. Remplacer `<colonne>` par un nom de colonne (voir `/schema`) "
"et `<opérateur>` par : `exact`, `contains`, `notcontains`, `less`, `greater`, "
"`strictly_less`, `strictly_greater`, `in`, `notin`, `isnull`, `isnotnull`, `sort`. "
"Exemple : `acheteur_id__contains=VILLE`, `montant__greater=10000`."
),
},
],
)
@require_token
def data():
"""Récupère des marchés publics filtrés.