gistools/readers/gbfs/schema_v1/
free_bike_status.rs1use crate::readers::{GBFSRentalUri, gbfs_bool_or_int};
2use alloc::{string::String, vec::Vec};
3use s2json::MValue;
4use serde::{Deserialize, Serialize};
5
6pub type GBFSFreeBikeStatusV1 = GBFSFreeBikeStatusV11;
13
14#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, MValue)]
16pub struct GBFSFreeBikeV11 {
17 pub bike_id: String,
19 pub lat: f64,
21 pub lon: f64,
23 #[serde(deserialize_with = "gbfs_bool_or_int")]
25 pub is_reserved: bool,
26 #[serde(deserialize_with = "gbfs_bool_or_int")]
28 pub is_disabled: bool,
29 pub rental_uris: Option<GBFSRentalUri>,
31}
32
33#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
35pub struct GBFSFreeBikeDataV11 {
36 pub bikes: Vec<GBFSFreeBikeV11>,
38}
39
40#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
42pub struct GBFSFreeBikeStatusV11 {
43 pub last_updated: u64,
45 pub ttl: u64,
47 pub version: String,
49 pub data: GBFSFreeBikeDataV11,
51}
52
53#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
55pub struct GBFSFreeBikeV10 {
56 pub bike_id: String,
58 pub lat: f64,
60 pub lon: f64,
62 #[serde(deserialize_with = "gbfs_bool_or_int")]
64 pub is_reserved: bool,
65 #[serde(deserialize_with = "gbfs_bool_or_int")]
67 pub is_disabled: bool,
68}
69
70#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
72pub struct GBFSFreeBikeDataV10 {
73 pub bikes: Vec<GBFSFreeBikeV10>,
75}
76
77#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
79pub struct GBFSFreeBikeStatusV10 {
80 pub last_updated: u64,
82 pub ttl: u64,
84 pub data: GBFSFreeBikeDataV10,
86}