October 25, 2021 10:54 pm

GBFS v2.3-RC est ici pour résoudre (certains de) vos problèmes

*Puede encontrar una traducción de este artículo al español aquí.*

*You can find a version of this article in English here.*

Nous adorons voir tous les flux de GBFS v2.2 qui viennent d’un peu partout dans le monde – qui alimentent de nouvelles intégrations de planification de voyage, et qui facilitent l’habileté des voyageurs de trouver leur vélo, trottinette, ou auto partagée le plus près !


Mais même si nous adorons v2.2, GBFS était prêt pour quelques améliorations. Laissez-nous vous présenter à v2.3-RC !

Image: Vélo Capital Bikeshare avec ticket de réparation. Crédit: Charles Hagman

Essentiellement, v2.3-RC ajoute de l’information à propos des: 

  • Stations avec capacité de recharge,
  • Restrictions de dépôt de véhicule,
  • Icônes de véhicules et information sur la marque,
  • Temps pour conserver un véhicule, et
  • Termes et politique de confidentialité.

Pour faciliter la vie des systèmes avec stations, v2.3-RC ajoute aussi la capacité à présenter l’information tarifaire par type de véhicule plutôt que seulement par véhicule individuel.

Pourquoi vouloir utiliser GBFS v2.3-RC? v2.3-RC permet de meilleures descriptions des services disponibles – ce qui veut dire que les producteurs et consommateurs de données peuvent fournir plus facilement aux voyageurs les informations qu’ils nécessitent.

Creusons un peu plus profondément dans chacun des changements. Après cela, nous allons fournir des exemples de données pour les développeurs.

Plus de détails sur les changements

Stations de recharge

Les versions précédentes de GBFS ne pouvaient pas indiquer qu’une station pourrait offrir la recharge des véhicules. Sans surprise, nous avons remarqué une grande variété de solutions différentes et non-standardisées ajoutées dans des flux de GBFS. v2.3-RC ajoute une façon très simple d’indiquer si la station offre le rechargement. Dans le futur, nous allons faciliter la représentation des programmes qui offrent des avantages pour le stationnement aux stations de recharge ou qui exigent que le véhicule soit retourné aux stations de recharge. 

Restrictions de dépôt de véhicule

La majorité des services de partage de vélos, trottinettes, et vélos à moteurs permettent des locations d’un point de service à un autre, contrairement aux services de location de voiture traditionnels qui exigent que la voiture soit retournée à l’endroit de location original. Mais, comme le GBFS est élargi pour representer l’autopartage (avec son univers d’opérations différentes), et comme les services de mobilités partagées incluent de plus en plus de projet pilotes de véhicules adaptées (souvent avec des règles de locations plus sévères), GBFS nécessite une capacité à représenter les restrictions de lieu de dépôt.

v2.3-RC permet aux opérateurs de mobilité partagée de définir si la restriction de dépôt d’un véhicule est flottant (le véhicule doit être retourné n’importe où dans la zone de service), en boucle (le véhicule doit être retourné à la station de location originale), ou en station (le véhicule doit être retourné à n’importe quelle station dans la zone de service).

Graphique: Un exemple d’un trajet qui exige que le véhicule soit retourné à sa station originale. 

Icônes et marques

Les flux de données GBFS publics permettent aux applications de planification de trajet de rendre les services de mobilités partagés plus faciles à trouver et à utiliser. Mais les versions précédentes de GBFS ne permettaient pas de représenter graphiquement les opérateurs et véhicules différents, exigeant du travail supplémentaire de la part des producteurs et consommateurs de GBFS. v2.3-RC ajoute l’information par rapport au logo du système de mobilité partagée et leurs couleurs de marques, ainsi que les icônes des types de véhicule pour assurer que la représentation graphique soit cohérente (et donc une reconnaissance plus facile pour les voyageurs).

Temps pour conserver un véhicule réservé

De nombreux services de mobilités partagés permettent à un voyageur de réserver un véhicule avant la prise de possession, généralement pour une durée maximale de 30 minutes. Durant ce temps, le véhicule ne peut pas être loué par un autre utilisateur et si la prise de possession ne se fait pas en-deçà du temps permis, le véhicule est libéré et redevient disponible. Avec v2.3-RC, GBFS peut maintenant représenter combien de temps un véhicule peut être réservé avant sa prise de possession.

Capture d’écran: application Baywheels

Terms et politiques de confidentialité

v2.3-RC inclut des champs permettant aux opérateurs de mobilité partagés de fournir leurs termes et politiques de confidentialité, ce qui rend plus facile pour les voyageurs d’accéder à ces informations lorsqu’ils considèrent utiliser un service.

Tarifications pour les systèmes à station 

Comme nous l’avons dit plus tôt, nous sommes ravis de voir v2.2 si largement adopté ! v2.2 a amélioré l’information tarifaire (voir notre article à ce sujet ici), notamment en ajoutant un identifiant de plan tarifaire (pricing_plan_id) à l’information d’un vélo disponible, ce qui a pour effet d’associer les informations tarifaires aux véhicules individuels. Cette structure au niveau individuel permet une tarification dynamique selon l’emplacement physique du véhicule. Mais cette solution posait un défi pour les systèmes en station, puisqu’ils ne sont pas obligés de publier les fichiers contenant l’information des véhicules individuels. Ils peuvent uniquement publier ces informations pour toute la station, limitant ainsi les véhicules à un seul plan tarifaire. 

v2.3-RC permet de représenter les plans tarifaires selon les types de véhicules, permettant aussi aux opérateurs de mobilité partagée de définir un plan tarifaire par défaut, pouvant être utilisé par les planificateurs de voyage pour calculer le prix d’une seule utilisation.

Vous voulez plus de détails? Lisez la section ci-dessous!


Descriptions et exemples de code

Stations de recharge

v2.3-RC ajoute un champ booléen optionnel is_charging_station au fichier station_information.json. Ceci indique si une station permet la recharge de véhicules électriques. Voyez l’exemple ci-dessous dans le bloc de code station_information.json.

Restrictions de dépôt de véhicules

V2.3 ajoute un champs return_type optionnel au fichier vehicle_types.json qui permet aux opérateurs de définir si un véhicule est free_floating (véhicule doit être retourné n’importe où dans la zone de service), roundtrip (véhicule doit être retourné à la station originale) ou any_station (vehicle doit être retourné à n’importe quelle station dans la zone de service).

De plus, pour représenter des cas d’usage où un véhicule doit être retourné à une station particulière qui n’est pas la station d’origine, le champs home_station_id a été ajouté à free_bike_status.json.

Affichage de la marque et icônes

v2.3-RC ajoute des champs aux fichiers system_information.json et vehicle_types.json pour supporter l’information sur la marque et les icônes des types de véhicule. Dans vehicle_types.json un nouveau champ optionnel d’objet JSON vehicle_assets a été ajouté. Dans vehicle_assets, un opérateurs peut partager un URL pour un fichier graphique SVG v1.1 d’un icône de véhicule (icon_url), un fichier graphique SVG v1.1 d’icônes mode sombre (icon_url_dark), et la date que les icônes référencés on été modifié (icon_last_modified).

Si vehicle_assets est défini, icon_url et icon_last_modified sont conditionnellement requis. Voir l’exemple ci-dessous dans le bloc code vehicle_types.json.  

Temps de réservation d’un véhicule

v2.3-RC ajoute un champ default_reserve_time optionnel au fichier vehicle_types.json qui contient le temps maximum en minutes qu’un véhicule peut être réservé avant la prise de possession du véhicule en location. Le nom du champ à été choisi pour laisser de la flexibilité afin d’inclure d’autres cas d’utilisation dans le futur (par exemple, le temps maximum de réservation qui pourrait être associé avec un plan tarifaire). Voir l’exemple ci-dessous dans la bloc code vehicle_types.json.

Termes et politique de confidentialité

v2.3-RC ajoute quatre nouveaux champs optionnels au fichier system_information.json. Un opérateur peut maintenant partager un URL (terms_url) qui pointe vers leurs conditions de service (aussi connus comme ‘conditions d’utilisations’ ou ‘termes et conditions’) et un URL (privacy_url) qui pointe vers leurs politique de confidentialité. Ces deux nouveaux champs sont accompagnés par deux autres nouveaux champs qui indiquent la dernière fois que la politique a été modifiée – terms_last_updated et privacy_last_updated. Si privacy_url est défini, privacy_last_updated est requis. De la même manière, si terms_url est défini, terms_last_updated et requis. Voir l’exemple ci-dessous dans le bloc code system_information.json.

Tarification

v2.3-RC ajoute pricing_plan_id au fichier vehicle_types.json qui contient les identifiant des plans de tous les plans de tarifications applicable par type de véhicule. Il y ajoute aussi un champ (default_pricing_plan_id) qui définit un plan tarifaire défaut pour être utilisé par les applications de planification de voyage pour calculer le prix d’un voyage simple. 

La capacité de définir les plans tarifaires au niveau du véhicule individuel est préservée, ce qui permettrait de fixer les prix en fonction de l’emplacement du véhicule ou d’autres facteurs. N’importe quel plan qui est assigné à un véhicule individuel dans free_bike_status.json remplace le plan défaut définit dans vehicle_types.json. Voir l’exemple ci-dessous dans le bloc code vehicle_types.json.  

Plus de détails pour les Développeurs

–> vehicle_types.json

Exemple représentant les restrictions de dépôt de véhicules, image de la marque et icônes, temps de réservation d’un véhicule, et tarification par type de véhicule. 

Dans cet exemple, vous pouvez voir trois types de véhicules différents: 

  • Un vélo non-électrique qui peut être retenue pour 30 minutes avant le début du trajet, qui peut être retourné à n’importe quelle station ou n’importe où dans la zone de service (ou comme restreint par geofencing_zones.json), qui a des icônes de véhicule réguliers et mode sombres de disponible, et à qui trois plan tarifaires différents pouvant être appliquée (avec un de ceux-ci indiqué comme défaut).  
  • Une trottinette électrique qui peut être retenue pour 30 minutes avant le début du trajet, avec une distance maximale de 12 345 mètres sur une charge complète, qui peut être retournée n’importe où dans la zone de service (ou restreint par geofencing_zones.json), qui a des icônes de véhicule réguliers et mode sombre de disponible, et à qui un plan tarifaire applicable.
  • Une berline avec moteur de combustion avec quatre portes qui ne peut pas être retenue avant le trajet, avec un distance maximale de 523 992 km sur un réservoir plein, qui doit être retournée à la station de location originale, qui a des icônes de véhicule régulier et mode sombre de disponible, et à qui un plan tarifaire applicable.
{
  "last_updated": 1632269413,
  "ttl": 60,
  "version": "2.3",
  "data": {
    "vehicle_types": [
      {
        "vehicle_type_id": "abc123",
        "form_factor": "bicycle",
        "propulsion_type": "human",
        "name": "Example Basic Bike",
        "default_reserve_time": 30,
        "return_type": [
          "any_station",
          "free_floating"
        ],
        "vehicle_assets": {
          "icon_url": "https://www.example.com/assets/icon_bicycle.svg",
          "icon_url_dark": "https://www.example.com/assets/icon_bicycle_dark.svg",
          "icon_last_modified": "2021-06-15"
        },
        "default_pricing_plan_id": "bike_plan_1",
        "pricing_plan_ids": [
          "bike_plan_1",
          "bike_plan_2",
          "bike_plan_3"
        ]
      },
      {
        "vehicle_type_id": "def456",
        "form_factor": "bicycle",
        "propulsion_type": "electric",
        "name": "Example E-bike V2",
        "default_reserve_time": 30,
        "max_range_meters": 12345,
        "return_type": [
          "any_station"
        ],
        "vehicle_assets": {
          "icon_url": "https://www.example.com/assets/icon_ebike.svg",
          "icon_url_dark": "https://www.example.com/assets/icon_ebike_dark.svg",
          "icon_last_modified": "2021-06-15"
        },
        "default_pricing_plan_id": "ebike_plan_1"
      },
      {
        "vehicle_type_id": "car1",
        "form_factor": "car",
        "propulsion_type": "combustion",
        "name": "Four-door Sedan",
        "default_reserve_time": 0,
        "max_range_meters": 523992,
        "return_type": [
          "roundtrip_station"
        ],
        "vehicle_assets": {
          "icon_url": "https://www.example.com/assets/icon_car.svg",
          "icon_url_dark": "https://www.example.com/assets/icon_car_dark.svg",
          "icon_last_modified": "2021-06-15"
        },
        "default_pricing_plan_id": "car_plan_1"
      }
    ]
  }
}

–> free_bike_status.json

Exemple représentant un restriction de dépôt de véhicule ou le véhicule doit être retourné à une station particulière qui n’est pas nécessairement la même station de location originale (home_station_id).

Dans cet exemple vous pouvez voir deux vélos – tous les deux sont disponibles pour location (pour les deux, is_reserved et is_disabled sont faut). Un vélo est non-électrique, et l’autre est électrique situé à la station 86 (station_id). Le vélo électrique situé à la station peut parcourir une distance de 6543 mètres avec sa charge actuelle, il y a un plan tarifaire applicable, et il faut retourner le vélo à une station différente, station 146 (home_station_id), à la fin du trajet. Pour cet exemple, le vehicle_types.json accompagnant aurait besoin de définir vehicle_type_id comme ayant au moins le return_type any_station.

{
  "last_updated": 1609866247,
  "ttl": 0,
  "version": "3.0",
  "data": {
    "bikes": [
      {
        "bike_id": "ghi789",
        "last_reported": 1609866109,
        "lat": 12.345678,
        "lon": 56.789012,
        "is_reserved": false,
        "is_disabled": false,
        "vehicle_type_id": "abc123"
      },
      {
        "bike_id": "jkl012",
        "last_reported": 1609866204,
        "is_reserved": false,
        "is_disabled": false,
        "vehicle_type_id": "def456",
        "current_range_meters": 6543,
        "station_id": "86",
        "pricing_plan_id": "plan3",
        "home_station_id": "146"
      }
    ]
  }
}

–> system_information.json

Exemple représentant les champs termes et politique de confidentialité et actifs de marques.

Dans cet exemple, vous pouvez voir un système qui a défini de nombreux champs optionnels, incluant tous les champs ajoutés dans v2.3-RC: terms_url, terms_last_updated, privacy_url, privacy_last_updated, et tous les champs possibles dans brand_assets (brand_last_modified, brand_image_url, brand_image_url_dark, color, et terms_url).

{
  "last_updated": 1611598155,
  "ttl": 1800,
  "version": "3.0",
  "data": {
    "system_id": "example_cityname",
    "language": "en",
    "name": "Example Bike Rental",
    "short_name": "Example Bike",
    "operator": "Example Sharing, Inc",
    "url": "https://www.example.com",
    "purchase_url": "https://www.example.com/join",
    "start_date": "2010-06-10",
    "phone_number": "1-800-555-1234",
    "email": "customerservice@example.com",
    "feed_contact_email": "datafeed@example.com",
    "timezone": "US/Central",
    "license_url": "https://www.example.com/data-license.html",
    "terms_url": "https://www.example.com/terms-of-service.html",
    "terms_last_updated": "2021-09-23",
    "privacy_url": "https://www.example.com/privacy-policy.html",
    "privacy_last_updated": "2021-09-25",
    "brand_assets": {
        "brand_last_modified": "2021-06-15",
        "brand_image_url": "https://www.example.com/assets/brand_image.svg",
        "brand_image_url_dark": "https://www.example.com/assets/brand_image_dark.svg",
        "color": "#C2D32C",
        "terms_url": "https://www.example.com/assets/brand.pdf"
      }
      
  }
}