gistools/readers/gbfs/schema_v1/
gbfs.rs1use alloc::{collections::BTreeMap, string::String, vec::Vec};
2use serde::{Deserialize, Serialize};
3
4pub type GBFSV1 = GBFSV11;
11
12#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
14pub enum GBFSV11FeedsName {
15 #[default]
17 #[serde(rename = "gbfs")]
18 Gbfs,
19 #[serde(rename = "gbfs_versions")]
21 GbfsVersions,
22 #[serde(rename = "system_information")]
24 SystemInformation,
25 #[serde(rename = "station_information")]
27 StationInformation,
28 #[serde(rename = "station_status")]
30 StationStatus,
31 #[serde(rename = "free_bike_status")]
33 FreeBikeStatus,
34 #[serde(rename = "system_hours")]
36 SystemHours,
37 #[serde(rename = "system_alerts")]
39 SystemAlerts,
40 #[serde(rename = "system_calendar")]
42 SystemCalendar,
43 #[serde(rename = "system_regions")]
45 SystemRegions,
46 #[serde(rename = "system_pricing_plans")]
48 SystemPricingPlans,
49}
50
51#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
53pub struct GBFSV11Feeds {
54 pub name: GBFSV11FeedsName,
56 pub url: String,
58}
59
60#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
62pub struct GBFSV11FeedsData {
63 pub feeds: Vec<GBFSV11Feeds>,
65}
66
67#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
69pub struct GBFSV11 {
70 pub last_updated: u64,
72 pub ttl: u64,
74 pub version: String,
76 pub data: BTreeMap<String, GBFSV11FeedsData>,
78}
79
80#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
82pub struct GBFSV10Feeds {
83 pub name: String,
85 pub url: String,
87}
88
89#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
91pub struct GBFSV10FeedsData {
92 feeds: Vec<GBFSV10Feeds>,
94}
95
96#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
98pub struct GBFSV10 {
99 pub last_updated: u64,
101 pub ttl: u64,
103 pub data: BTreeMap<String, GBFSV10FeedsData>,
105}