etalab / transport-site

Rendre disponible, valoriser et améliorer les données transports
https://transport.data.gouv.fr
190 stars 29 forks source link

L'API n'expose pas l'id des ressources #2303

Closed thbar closed 1 year ago

thbar commented 2 years ago

Je me suis mis en mode réutilisateur ce matin pour voir si je pouvais, juste en passant par l'API (donc sans le backoffice ou une connection SQL), trouver la liste des GTFS-RT contenant des "service alerts". Je partagerai cela dans une PR, toutefois j'ai remarqué un point qui est embêtant en terme d'ergonomie.

Si on requête l'API, les ressources retournées n'incorporent pas la clé primaire qui est actuellement utilisée pour créer les liens sur le site (pour la ressource GTFS que je mentionne plus bas, https://transport.data.gouv.fr/resources/11765).

En tant que réutilisateur, je voudrais pouvoir trivialement retourner sur le PAN avec la bonne page, à partir des infos de l'API, pour obtenir davantage de services fournis par le PAN, ou vérifier ce qui se passe.

(je ne précise pas ici mon opinion sur l'identifiant qui devrait être utilisé pour cette opération, il y a des réflexions en cours côté dév, voir aussi #1946 etc ; la clé primaire peut être valable si elle est solide, sinon il faudrait un UUID stable dans le temps etc).

Bref - typiquement, voici une payload retournée, là je filtre sur le premier dataset, en partant de l'index général:

> curl https://transport.data.gouv.fr/api/datasets | jq ".[0"]
Response ```json { "aom": { "name": "CA Epernay, Coteaux et Plaine de Champagne", "siren": "200067684" }, "community_resources": [], "covered_area": { "aom": { "name": "CA Epernay, Coteaux et Plaine de Champagne", "siren": "200067684" }, "name": "CA Epernay, Coteaux et Plaine de Champagne", "type": "aom" }, "created_at": "2020-08-26", "datagouv_id": "5f464157d4f8b5f24a070cbe", "id": "5f464157d4f8b5f24a070cbe", "page_url": "https://transport.data.gouv.fr/datasets/horaires-theoriques-du-reseau-mouveo-communaute-dagglomeration-epernay-coteaux-et-plaine-de-champagne", "publisher": { "name": "Fluo Grand Est", "type": "organization" }, "resources": [ { "content_hash": "ca3d04353a033b1526a69dae8e68827889d97e00621d2c7bd22b969723bb737c", "datagouv_id": "eda23caf-63c0-4ed1-9a9a-947c0ca65aba", "end_calendar_validity": "2022-12-31", "features": [ "position des stations", "horaires théoriques", "topologie du réseau" ], "format": "GTFS", "metadata": { "end_date": "2022-12-31", "has_fares": false, "has_shapes": false, "issues_count": { "DuplicateStops": 3, "NullDuration": 1 }, "lines_count": 10, "modes": [ "bus" ], "networks": [ "Mouvéo" ], "some_stops_need_phone_agency": false, "some_stops_need_phone_driver": false, "start_date": "2021-11-09", "stop_areas_count": 84, "stop_points_count": 151 }, "modes": [ "bus" ], "original_url": "https://exs.grandest2.cityway.fr/GTFS.aspx?Key=OPENDATA&OperatorCode=EPY", "start_calendar_validity": "2021-11-09", "title": "export-gtfs.zip", "updated": "2021-12-23T15:58:55.659000+01:00", "url": "https://www.data.gouv.fr/fr/datasets/r/eda23caf-63c0-4ed1-9a9a-947c0ca65aba" }, { "content_hash": "4d47f1e061d883989ae849c0fe328bf307828cca3d4fbf845bfff7728d100e41", "datagouv_id": "21c91b3a-e34e-4961-9ce9-76f0a64454ee", "features": [ "position des stations", "horaires théoriques", "topologie du réseau" ], "format": "NeTEx", "modes": [], "original_url": "https://exs.grandest2.cityway.fr/NETEX.aspx?Key=OPENDATA&OperatorCode=EPY", "title": "export-netex.zip", "updated": "2021-12-23T15:59:06.961000+01:00", "url": "https://www.data.gouv.fr/fr/datasets/r/21c91b3a-e34e-4961-9ce9-76f0a64454ee" } ], "slug": "horaires-theoriques-du-reseau-mouveo-communaute-dagglomeration-epernay-coteaux-et-plaine-de-champagne", "title": "Réseau urbain Mouvéo", "type": "public-transit", "updated": "2021-12-23T15:59:06.961000+01:00" } ```

Côté dataset, je remarque qu'on dispose déjà de page_url qui remonte directement à la bonne page pour le dataset.

❯ curl -s https://transport.data.gouv.fr/api/datasets | jq ".[0]" | grep transport  
  "page_url": "https://transport.data.gouv.fr/datasets/horaires-theoriques-du-reseau-mouveo-communaute-dagglomeration-epernay-coteaux-et-plaine-de-champagne",

Peut-être que c'est une solution élégante de "simplement" exposer ce lien pour chaque ressource, et que ça permet de temporiser la réflexion sur les identifiants ?

thbar commented 2 years ago

@etalab/transport-tech on pourrait ajouter page_url sur les ressources, qui pointe directement vers un lien avec la clé primaire (https://transport.data.gouv.fr/resources/11765), surtout après nos échanges de ce matin sur l'identification des ressources. Votre avis ?

AntoineAugusti commented 2 years ago

Très bien

thbar commented 2 years ago

Voir #2410 aussi, une fois que ça sera migré il sera souhaitable d'exposer ça dans le retour API !

AntoineAugusti commented 1 year ago

2855 ajoute page_url uniquement, comme pour le dataset