Prima di procedere con questa sezione, se non l'hai ancora fatto, verifica i sistemi di micromobilità supportati per cui stai creando il feed.
Nelle sezioni seguenti, ogni intestazione ha il seguente formato:
Required|Optional|Conditionally required: Feed name (System supported)
. Sono supportati i seguenti sistemi:
- Sistema agganciato
- Sistema senza stazione di ricarica
- Sistema con base e senza base
Per eseguire l'integrazione con Google, fornisci solo i file necessari per il sistema descritto dal feed e specifica i campi obbligatori inclusi nelle sezioni pertinenti. Per i campi obbligatori in modo condizionale, consulta la descrizione del campo per indicazioni. Puoi anche specificare campi facoltativi che aggiungono informazioni e forniscono una migliore esperienza utente.
Intestazione obbligatoria per i feed di micromobilità
I feed di micromobilità sono feed che contengono dati strutturati di micromobilità con o senza stazione di ricarica, come definito in questo articolo.
Tutti i feed devono sempre specificare i campi inclusi nella tabella seguente al livello superiore dell'oggetto JSON, noti collettivamente come intestazione GBFS comune.
Nome campo | Tipo | Requisito | Descrizione |
---|---|---|---|
last_updated |
Timestamp | Obbligatorio | Un timestamp POSIX, che specifica un numero di secondi dal 1° gennaio
1970 00:00:00 UTC.
Impostato sull'ultima volta che i dati nel feed sono stati aggiornati. |
ttl |
Numero intero non negativo | Obbligatorio | Un numero intero non negativo che rappresenta il numero di secondi che
rimangono fino al momento dell'aggiornamento del feed.
Se i dati devono essere aggiornati a una velocità costante, imposta questo valore su
|
data |
JSON | Obbligatorio | JSON contenente i campi di dati per il singolo feed. |
Ad esempio, un feed free_bike_status.json
aggregato che specifica l'intestazione GBFS comune potrebbe essere il seguente:
{
"ttl": 30,
"last_updated": 1576123774,
"data": {
"bikes": [ ... ] // GBFS free bike status objects.
}
}
Obbligatorio: system_information.json (sistema con aggancio e senza aggancio)
Fai riferimento alla specifica GBFS in base alle tue necessità.
Questo feed fornisce dettagli sull'operatore del sistema.
Nome campo | Tipo | Requisito | Descrizione |
---|---|---|---|
system_id |
ID | Obbligatorio | Un identificatore univoco globale per il sistema di condivisione del veicolo. Questo valore è destinato a rimanere invariato per tutta la durata del sistema. Ogni sistema o area geografica distinta in cui vengono utilizzati i veicoli DEVE avere il proprio system_id. Gli ID sistema DEVONO essere riconoscibili come appartenenti a un sistema specifico anziché a stringhe casuali, ad esempio bcycle_austin o biketown_pdx. |
name |
Stringa | Obbligatorio | Nome del sistema, che viene mostrato ai clienti. |
rental_apps |
Oggetto | Obbligatorio | Un oggetto JSON contenente le informazioni dell'app di noleggio per Android e iOS nei rispettivi campi. |
rental_apps.android |
Oggetto | Obbligatorio condizionalmente |
Contiene informazioni sul download e sulla scoperta di app di noleggio per la piattaforma Android
nei campi store_uri e discovery_uri . Se il fornitore del sistema ha un'app di noleggio per Android, questo campo è
obbligatorio.
|
rental_apps.android.store_uri |
URI | Obbligatorio | URI da cui è possibile scaricare l'app Android per il noleggio. In genere si tratta di un URI a uno store come Google Play. Se l'URI rimanda a uno store come Google Play, ti consigliamo di seguire le best practice di Android in modo che l'app di visualizzazione possa aprire direttamente l'URI nell'app nativa dello store anziché in un sito web. |
rental_apps.android.discovery_uri |
URI | Obbligatorio | URI nel formato your_custom_scheme://your/path/here .
L'URI può essere utilizzato da PackageManager.queryIntentActivities()
per scoprire se l'app Android di noleggio è installata sul dispositivo.
|
rental_apps.ios |
Oggetto | Obbligatorio condizionalmente | Contiene informazioni sul download e sulla scoperta di app di noleggio per la piattaforma iOS
nei campi store_uri e discovery_uri . Se il fornitore del sistema ha un'app di noleggio per iOS, questo campo è
obbligatorio.
|
rental_apps.ios.store_uri |
URI | Obbligatorio | URI da cui è possibile scaricare l'app iOS di noleggio. In genere si tratta di un URI a uno store come l'App Store di Apple. Se l'URI rimanda a un app store come l'App Store di Apple, ti consigliamo di seguire le best practice per iOS in modo che l'app di visualizzazione possa aprire direttamente l'URI nell'app nativa dell'app store anziché in un sito web. |
rental_apps.ios.discovery_uri |
URI | Obbligatorio | URI nel formato your_custom_scheme:// . L'URI può essere
utilizzato da UIApplication canOpenURL: per scoprire se
l'app iOS di noleggio è installata sul dispositivo.
|
Obbligatorio: free_bike_status.json (sistema senza stazione di bike sharing)
Fai riferimento alla specifica GBFS in base alle tue necessità.
Questo feed definisce le posizioni e gli attributi dei veicoli indipendenti disponibili. Per motivi di privacy, i veicoli che fanno parte di un noleggio attivo non devono essere visualizzati in questo feed.
Nome campo | Tipo | Requisito | Descrizione |
---|---|---|---|
bikes |
Array | Obbligatorio | Un array di biciclette attualmente disponibili e ferme, in cui ogni bicicletta è un oggetto. |
bikes[].bike_id |
ID | Obbligatorio | L'identificatore di una bicicletta.
Per proteggere la privacy, l'ID può essere modificato in una stringa casuale dopo ogni viaggio. |
bikes[].lat |
Latitudine | Obbligatorio | La latitudine WGS 84 della bicicletta, in formato gradi decimali. |
bikes[].lon |
Longitudine | Obbligatorio | La longitudine WGS 84 della bicicletta, in formato gradi decimali. |
bikes[].is_reserved |
Booleano | Obbligatorio | Indica se la bicicletta è attualmente prenotata, come segue:
|
bikes[].is_disabled |
Booleano | Obbligatorio | Indica se la bicicletta è attualmente disattivata o rotta, come segue:
|
bikes[].rental_uris |
Oggetto | Obbligatorio | Un oggetto JSON contenente gli URI di noleggio per Android, iOS e web nei rispettivi campi. |
bikes[].rental_uris.android |
URI | Obbligatorio condizionalmente | Un URI che può essere trasmesso a un'app Android con un
intent Android android.intent.action.VIEW per supportare
i link diretti per Android. L'rental_uris fornito deve essere
un link per app Android in modo che l'app di visualizzazione non debba gestire manualmente
il reindirizzamento dell'utente all'app store nel caso in cui
l'utente non abbia installato l'applicazione del fornitore.
Questo URI deve essere un link diretto specifico per la singola bicicletta, non una pagina di noleggio generica che include informazioni per più di una bicicletta. Il link diretto deve indirizzare l'utente direttamente alla bicicletta senza richieste, pagine interstitial o accessi. Assicurati che gli utenti possano vedere la bicicletta anche se non hanno mai aperto l'applicazione. Non è necessario che gli URI includano Se il partner ha un'app di noleggio per Android, questo campo è obbligatorio. Esempio di Link per app Android:
|
bikes[].rental_uris.ios |
URI | Obbligatorio condizionalmente | Un URI che può essere utilizzato su iOS per avviare l'app di noleggio della bicicletta.
Per saperne di più, consulta l'articolo di Apple sugli
schemi URL personalizzati di iOS.
Il rental_uris fornito deve essere
link universali iOS in modo che l'app di visualizzazione non debba gestire manualmente
il reindirizzamento dell'utente all'app store nel caso in cui
l'utente non abbia installato l'applicazione del fornitore.
Questo URI deve essere un link diretto specifico per la singola bicicletta, non una pagina di noleggio generica che include informazioni per più di una bicicletta. Il link diretto deve indirizzare l'utente direttamente alla bicicletta senza richieste, pagine interstitial o accessi. Assicurati che gli utenti possano vedere la bicicletta anche se non hanno mai aperto l'applicazione. Non è necessario che gli URI includano bike_id per la bicicletta, a condizione che il partner disponga di altri mezzi per identificare la bicicletta in questione. Ad esempio, l'app di noleggio può utilizzare altri identificatori all'interno dell'URI per identificare in modo univoco la bicicletta. Se il partner ha un'app di noleggio per iOS, questo campo è obbligatorio. Esempio di link universali iOS:
|
bikes[].rental_uris.web |
URL | Facoltativo | Un URL che può essere utilizzato da un browser web per mostrare ulteriori informazioni sul noleggio di un veicolo presso questo veicolo. Questo URL deve essere un link diretto specifico per la singola bicicletta, non una pagina di noleggio generica che include informazioni per più di una bicicletta. Il link diretto deve indirizzare l'utente direttamente alla bicicletta senza richieste, pagine interstitial o accessi. Assicurati che gli utenti possano vedere la bicicletta anche se non hanno mai aperto l'applicazione. Non è necessario che gli URL includano Se questo campo non è impostato, significa che i link diretti non sono supportati per il browser web. Valore di esempio:
|
bikes[].vehicle_type_id |
ID | Obbligatorio | Il vehicle_type_id del veicolo come descritto nella sezione
vehicle_types.json .
|
bikes[].pricing_plan_id |
ID | Obbligatorio | Identificatore del piano tariffario applicato quando questo tipo di veicolo viene
noleggiato come descritto nella sezione
system_pricing_plans.json .
|
bikes[].current_range_meters |
Valore in virgola mobile non negativo | Obbligatorio condizionalmente | Se la definizione di vehicle_type corrispondente al
veicolo ha un motore, questo campo è obbligatorio.
Impostato sulla distanza massima in metri che il veicolo può percorrere senza necessità di ricarica o rifornimento, in base al livello di carica o carburante attuale del veicolo. |
bikes[].last_reported |
Timestamp | Facoltativo | Impostato sull'ultima volta che il veicolo ha comunicato il suo stato al backend dell'operatore. |
Di seguito è riportato un esempio per free_bike_status.json
:
"bikes": [{
"bike_id": "xyz123",
"lat": 12.34,
"lon": 56.78,
"is_reserved": true,
"is_disabled": false,
"rental_uris":{
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.example.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890"
},
"vehicle_type_id": "scooter_electric",
"pricing_plan_id": "sydneyPlan1",
"current_range_meters": 4500,
"last_reported": 1434054678
},
{
"bike_id": "abc123",
"lat": 1.34,
"lon": 146.78,
"is_reserved": false,
"is_disabled": true,
"rental_uris":{
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.example.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890"
},
"vehicle_type_id": "bike_manual",
"pricing_plan_id": "sydneyPlan1",
"last_reported": 1434054241
}
]
Obbligatorio: vehicle_types.json (sistema con stazione di bike sharing e senza stazione)
Fai riferimento alla specifica GBFS in base alle tue necessità.
Questo feed definisce i dettagli dei singoli tipi di veicoli, come indicato nella sezione
free_bike_status.json
.
Nome campo | Tipo | Requisito | Descrizione |
---|---|---|---|
vehicle_types |
Array | Obbligatorio | Un array di oggetti, in cui ogni oggetto definisce un tipo di veicolo distinto nel catalogo del fornitore. Può esserci un solo oggetto per un determinato tipo di veicolo. |
vehicle_types[].vehicle_type_id |
ID | Obbligatorio | Un identificatore univoco per un determinato tipo di veicolo. |
vehicle_types[].form_factor |
Enum | Obbligatorio | Un'enumerazione che rappresenta il fattore di forma generale del veicolo, dall'elenco
seguente di valori attualmente validi:
|
vehicle_types[].propulsion_type |
Enum | Obbligatorio | Un'enumerazione che rappresenta il tipo di propulsione principale del veicolo, dall'elenco seguente di valori attualmente validi:
|
vehicle_types[].max_range_meters |
Valore in virgola mobile non negativo | Obbligatorio condizionalmente | Se propulsion_type non è impostato su human , il
veicolo ha un motore, quindi questo campo è obbligatorio.
Impostato sulla distanza massima in metri che il veicolo può percorrere senza necessità di ricarica o rifornimento, quando il veicolo è completamente carico o ha il pieno. |
Di seguito è riportato un esempio per vehicle_types.json
:
"vehicle_types": [
{
"vehicle_type_id": "bike_manual",
"form_factor": "bicycle",
"propulsion_type": "human"
},
{
"vehicle_type_id": "scooter_electric",
"form_factor": "scooter",
"propulsion_type": "electric",
"max_range_meters": 10000
}
]
Obbligatorio: system_pricing_plans.json (sistema senza aggancio)
Fai riferimento alla specifica GBFS in base alle tue necessità.
Questo feed definisce i piani tariffari per i veicoli indipendenti. Richiediamo ai fornitori di mostrare le informazioni sui prezzi per i veicoli indipendenti.
Nome campo | Tipo | Requisito | Descrizione |
---|---|---|---|
plans |
Array | Obbligatorio | Un array di oggetti in cui ogni oggetto definisce un determinato piano tariffario. |
plans[].plan_id |
ID | Obbligatorio | Una stringa che rappresenta un identificatore univoco per il piano tariffario offerto dal fornitore. |
plans[].url |
URL | Facoltativo | L'URL che indirizza gli utenti finali a ulteriori informazioni sul piano tariffario. |
plans[].currency |
Stringa | Obbligatorio | Lo standard ISO 4217 per il piano tariffario. |
plans[].price |
Valore in virgola mobile non negativo | Obbligatorio |
Il piano tariffario deve essere definito come piano tariffario non valutato o come piano tariffario valutato:
|
plans[].per_km_pricing |
Array | Obbligatorio condizionalmente |
Se il prezzo è una funzione della distanza percorsa, visualizzata in chilometri, questo campo è obbligatorio. Un array di oggetti in cui ogni oggetto definisce un determinato
segmento diviso per distanza. Il valore Per determinare il prezzo totale del piano specificato, aggiungi il valore
Se questo campo non è impostato, non sono presenti prezzi variabili in base alla distanza e pertanto nessuno è incluso nel prezzo totale. |
plans[].per_km_pricing[].start |
Numero intero non negativo | Obbligatorio |
Il numero di chilometri a partire dal quale viene addebitata la tariffa del segmento.
Questo campo è impostato sul
valore inclusivo
che inizia l'intervallo del segmento. Pertanto, una volta trascorsi i chilometri, l'importo rate viene addebitato una sola volta.
|
plans[].per_km_pricing[].rate |
Float | Obbligatorio | La tariffa addebitata per ogni interval , a partire dal
start inclusivo del segmento. Se questo campo è impostato su un
numero negativo, il viaggiatore riceve uno sconto.
|
plans[].per_km_pricing[].interval |
Numero intero non negativo | Obbligatorio |
L'intervallo in chilometri in cui viene riapplicato indefinitamente il Il Se Se questo campo è impostato su |
plans[].per_km_pricing[].end |
Numero intero non negativo | Facoltativo |
Il numero di chilometri al punto in cui il Se questo campo non è impostato o è vuoto, viene addebitato l'importo |
plans[].per_min_pricing |
Array | Obbligatorio condizionalmente |
Se il prezzo è una funzione del tempo trascorso, visualizzato in minuti, questo campo è obbligatorio. Un array di oggetti in cui ogni oggetto definisce un segmento
diviso in base al tempo. Il valore Per determinare il prezzo totale del piano specificato, aggiungi il valore
Se questo campo non è impostato, non sono presenti prezzi variabili in base al tempo e pertanto nessuno è incluso nel prezzo totale. |
plans[].per_min_pricing[].start |
Float | Obbligatorio |
Il numero di minuti a partire dal quale viene addebitata la tariffa del segmento.
Questo campo è impostato sul
valore inclusivo
che inizia l'intervallo del segmento. Pertanto, una volta trascorso il numero di minuti impostato, il rate viene addebitato una sola volta.
|
plans[].per_min_pricing[].rate |
Float | Obbligatorio | Il tasso addebitato per ogni interval . La tariffa inizia
dall'inclusivo start del segmento. Se questo campo è impostato su un numero negativo, il viaggiatore riceve uno sconto.
|
plans[].per_min_pricing[].interval |
Numero intero non negativo | Obbligatorio |
L'intervallo in minuti in cui viene riapplicato Il Se Se questo campo è impostato su |
plans[].per_min_pricing[].end |
Numero intero non negativo | Facoltativo |
Il numero di minuti dopo i quali il Se questo campo non è impostato o è vuoto, viene addebitato il
|
Esempi per system_pricing_plans.json
Questa sezione fornisce esempi di codice system_pricing_plans.json
informativi. Vengono forniti anche i dettagli e i risultati pertinenti di ciascun esempio.
Esempio 1 per system_pricing_plans.json
Il seguente esempio di codice del piano tariffario mostra gli addebiti in base alla durata del viaggio per i seguenti intervalli:
- [0,1): 2 $
- Se il viaggio dura meno di un minuto, l'utente paga 2 $.
- Esempio: viaggio di 59 secondi
- [1,2): 3 $ USD
- Se il viaggio dura almeno un minuto, ma meno di due minuti, l'utente paga 2 $+ 1 $= 3 $.
- Esempi: corsa di 1 minuto; corsa di 1 minuto e 45 secondi
- x numero di minuti in cui x è maggiore o uguale a 2:
$3 + (($2 + $1) * (x - 2 + 1))
USD
- Se il viaggio dura almeno due minuti, l'utente paga 3 $per
la parte del viaggio inferiore a due minuti e (1 $ [continuando
dalla prima voce dell'elenco
per_min_pricing
] + 2 $ [la seconda voce dell'elencoper_min_pricing
]) per ogni minuto successivo e inclusi i due minuti. - Esempi:
- Costo della corsa di 2 minuti: 3 $+ (2 $ + 1 $) = 6 $
- Costo della corsa di 2 minuti e 30 secondi: 3 $+ (2 $ + 1 $) = 6 $
- Costo della corsa di 3 minuti: 3 $+ (($2 + $1) * 2) = 9 $
- Costo della corsa di 10 minuti: 3 $+ ((2 $ + 1 $) * 9) = 30 $
- Se il viaggio dura almeno due minuti, l'utente paga 3 $per
la parte del viaggio inferiore a due minuti e (1 $ [continuando
dalla prima voce dell'elenco
{
"plans": {
"plan_id": "plan1",
"currency": "USD",
"price": 2,
"per_min_pricing": [
{
"interval": 1,
"rate": 1,
"start": 1
},
{
"interval": 1,
"rate": 2,
"start": 2
}
],
}
}
Esempio 2 per system_pricing_plans.json
In questo esempio, mostriamo un codice campione per un piano tariffario che viene addebitato a una tariffa sia per minuti che per chilometri:
- Nello specifico, all'utente finale vengono addebitati 0,25 $CAD per km e 0,50 $CAD al minuto.
- Entrambi questi tassi si verificano contemporaneamente e non dipendono l'uno dall'altro.
- Pertanto, una corsa di un chilometro che dura 10 minuti costa 9 $CAD. La
ripartizione del costo è la seguente:
- 3 $, prezzo base
- 0,25 $ * 2, addebitato una volta all'inizio del viaggio e una volta al chilometro.
- 0,5 $ * 11, addebitato una volta all'inizio di ogni minuto. Gli addebiti iniziano a 0 secondi, con l'ultimo intervallo addebitato a 10 minuti.
{
"plans": {
"plan_id": "plan2",
"currency": "CAD",
"price": 3,
"per_km_pricing": [{
"start": 0,
"rate": 0.25,
"interval": 1
}],
"per_min_pricing": [{
"start": 0,
"rate": 0.50,
"interval": 1
}]
}
}
Obbligatorio condizionalmente: geofencing_zones.json (sistema con e senza aggancio)
Fai riferimento alla specifica GBFS in base alle tue necessità.
Questo feed definisce i dati di geofencing per i veicoli indipendenti. I dati di geofencing includono i confini geografici che specificano dove i veicoli sono autorizzati a iniziare e terminare la corsa, nonché la velocità a cui i veicoli possono andare. Questa velocità è la velocità massima del veicolo o il limite di velocità della strada su cui si trova il veicolo, a seconda di quale sia inferiore. I conducenti devono rispettare le leggi e le ordinanze locali.
Utilizziamo questi dati in modo che, quando un utente cerca un determinato percorso, se la fine del viaggio non rientra nei geofence specifici, il risultato di micromobilità venga filtrato. Se non vengono forniti recinti virtuali, Google considera il servizio come se non avesse restrizioni di confine.
Nome campo | Tipo | Requisito | Descrizione |
---|---|---|---|
geofencing_zones |
Oggetto | Obbligatorio | Un oggetto FeatureCollection come descritto da
IETF RFC 7946 è un oggetto con un campo denominato
features . Il valore di features è un array JSON.
Ogni elemento della matrice JSON è un oggetto Feature .
Ogni zona recintata, le relative regole e attributi e le definizioni di |
geofencing_zones.type |
Stringa | Obbligatorio | Impostato su FeatureCollection come descritto nella
RFC 7946 di IETF. |
geofencing_zones.features |
Array | Obbligatorio | Una matrice JSON, in cui ogni elemento è un oggetto Feature . |
geofencing_zones.features[].type |
Stringa | Obbligatorio | Impostato su Feature come descritto nella
RFC 7946 di IETF. |
geofencing_zones.features[].geometry |
Multipoligono GeoJSON | Obbligatorio | Un Multipolygon GeoJSON che descrive dove non è possibile iniziare, terminare o attraversare le corse, oltre ad altre limitazioni. Una disposizione in senso orario dei punti definisce l'area racchiusa dal poligono, mentre un ordine antiorario definisce l'area esterna al poligono. Per ulteriori informazioni, consulta la regola della mano destra. |
geofencing_zones.features[].properties |
Oggetto | Obbligatorio | Un oggetto che definisce le indennità e le limitazioni di viaggio. |
geofencing_zones.features[].properties.rules |
Array | Facoltativo | Un array di oggetti, in cui ogni oggetto definisce una e una sola regola. Se due o più regole si sovrappongono, si scontrano o sono in conflitto in qualche modo, ha la precedenza la regola definita per prima nell'ordine del file JSON. |
geofencing_zones.features[].properties.rules[].vehicle_type_id |
Array | Facoltativo | Un array di ID tipo di veicolo, in cui ogni elemento è un
vehicle_type_id , a cui devono essere applicate eventuali limitazioni.
Se non è specificato alcun vehicle_type_id , le limitazioni
si applicano a tutti i tipi di veicoli. |
geofencing_zones.features[].properties.rules[].ride_allowed |
Booleano | Obbligatorio | Se il giro in bicicletta "sganciato" può iniziare e terminare nella zona, come segue:
|
Di seguito è riportato un esempio per geofencing_zones.json
:
"geofencing_zones":{
"type":"FeatureCollection",
"features":[{
"type":"Feature",
"properties":{
"rules":[{
"vehicle_type_id":"scooter",
"ride_allowed": false
}]
},
"geometry":{
"type":"MultiPolygon",
"coordinates":[[[
[-122.66780376434326, 45.49896266763551],
[-122.66810417175292, 45.49824825558575],
[-122.66830801963805, 45.49632305799116],
[-122.66780376434326, 45.49896266763551]
]]]
}
}]
}
Obbligatorio: station_information.json (sistema agganciato)
Fai riferimento alla specifica GBFS in base alle tue necessità.
Questo feed definisce le informazioni generali sulle stazioni di bike sharing pubblico.
Nome campo | Tipo | Requisito | Descrizione |
---|---|---|---|
stations |
Array | Obbligatorio | Un array di oggetti in cui ogni oggetto definisce una e una sola stazione. |
stations[].station_id |
Stringa | Obbligatorio | L'identificatore della stazione. |
stations[].name |
Stringa | Obbligatorio |
Il nome pubblico della stazione nella lingua locale della città in cui si trova la stazione. Il name deve rispettare quanto utilizzato
sulla segnaletica della stazione, se disponibile, oppure deve riflettere
la posizione della stazione tramite l'utilizzo di una strada trasversale o di un punto di riferimento locale.
Non utilizzare abbreviazioni come "Via" per "Via", a meno che non siano utilizzate
esplicitamente nella segnaletica e name deve essere in formato misto
seguendo le convenzioni locali per l'uso delle maiuscole nei nomi di luoghi e non
in maiuscolo.
|
stations[].lat |
Latitudine | Obbligatorio | La latitudine WGS 84 della stazione, in formato gradi decimali. |
stations[].lon |
Longitudine | Obbligatorio | La longitudine WGS 84 della stazione, in formato gradi decimali. |
stations[].capacity |
Numero intero non negativo | Facoltativo | Un numero intero non negativo che rappresenta il numero totale di punti di aggancio installati nella stazione, sia disponibili che non disponibili. |
stations[].rental_uris |
Oggetto | Obbligatorio |
Un oggetto JSON contenente gli URI di noleggio per Android, iOS e web nei rispettivi campi. Se questi URI sono specificati, sostituiscono i link diretti predefiniti impostati durante l'onboarding del fornitore. |
stations[].rental_uris.android |
URI | Obbligatorio condizionalmente |
Un URI che può essere trasmesso a un'app Android con un
intent Android Questo URI deve essere un link diretto specifico per la singola stazione, non una pagina di noleggio generale che include informazioni per più di una stazione. Il link diretto deve indirizzare l'utente direttamente alla stazione senza prompt, pagine interstitial o accessi. Assicurati che gli utenti possano vedere la stazione anche se non hanno mai aperto l'applicazione. Non è necessario che gli URI includano Se il partner ha un'app di noleggio per Android, questo campo è obbligatorio. Esempio di Link per app Android:
|
stations[].rental_uris.ios |
URI | Obbligatorio condizionalmente |
Un URI che può essere utilizzato su iOS per avviare l'app di noleggio per la stazione.
Per saperne di più, consulta l'articolo di Apple sugli
schemi URL personalizzati di iOS.
Il Questo URI deve essere un link diretto specifico per la singola stazione, non una pagina di noleggio generale che include informazioni per più di una stazione. Il link diretto deve indirizzare l'utente direttamente alla stazione senza prompt, pagine interstitial o accessi. Assicurati che gli utenti possano vedere la stazione anche se non hanno mai aperto l'applicazione. Non è necessariamente necessario includere Se il partner ha un'app di noleggio per iOS, questo campo è obbligatorio. Esempio di link universali iOS:
|
stations[].rental_uris.web |
URL | Facoltativo | Un URL che può essere utilizzato da un browser web per mostrare ulteriori informazioni su come noleggiare un veicolo in questa stazione. Questo URL deve essere un link diretto specifico per la singola stazione, non una pagina di noleggio generale che include informazioni per più di una stazione. Il link diretto deve indirizzare l'utente direttamente alla stazione senza richieste, pagine interstitial o accessi. Assicurati che gli utenti possano vedere la stazione anche se non hanno mai aperto l'applicazione. Non è necessario che gli URL includano Se questo campo non è impostato, significa che i link diretti non sono supportati per il browser web. Valore di esempio:
|
Di seguito è riportato un esempio per station_information.json
:
"stations": [
{
"station_id": "597",
"name": "Silverthorne Road, Battersea",
"lat": 51.472865,
"lon": -0.148059,
"capacity": 10,
"rental_uris": {
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.exampleexample.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890&platform=web"
}
},
]
Obbligatorio: station_status.json (sistema di aggancio)
Fai riferimento alla specifica GBFS in base alle tue necessità.
Questo feed definisce lo stato attuale e aggiornato delle stazioni di bike sharing pubbliche.
Nome campo | Tipo | Requisito | Descrizione |
---|---|---|---|
stations |
Array | Obbligatorio | Un array di oggetti, in cui ogni oggetto definisce una e una sola stazione. |
stations[].station_id |
Stringa | Obbligatorio | L'identificatore della stazione. |
stations[].num_bikes_available |
Numero intero non negativo | Obbligatorio |
Un numero intero non negativo che rappresenta il numero di biciclette funzionanti che si trovano fisicamente nella stazione e che potrebbero essere offerte per il noleggio. Per determinare se la stazione noleggia biciclette, devi
controllare il campo |
stations[].vehicle_types_available |
Array | Facoltativo |
Un array di oggetti che definisce il numero totale di veicoli,
classificati in base al tipo di veicolo individuale disponibile in una stazione. Ogni
oggetto modella il numero totale di veicoli per il tipo di veicolo associato. Il numero totale di veicoli di ciascuno di questi oggetti deve corrispondere
al valore specificato nel campo |
stations[].vehicle_types_available[].vehicle_type_id |
ID | Obbligatorio |
Il |
stations[].vehicle_types_available[].count |
Numero intero non negativo | Obbligatorio |
Il numero totale di veicoli disponibili per il |
stations[].num_docks_available |
Numero intero non negativo | Obbligatorio condizionalmente |
Il campo è obbligatorio, a meno che la stazione non abbia una capacità di aggancio illimitata. Ad esempio, le stazioni virtuali hanno capacità di aggancio illimitate e il campo non è obbligatorio. Un numero intero non negativo che rappresenta il numero totale di stazioni di ricarica funzionanti fisicamente presso la stazione in grado di accettare i resi dei veicoli. Per determinare se la stazione accetta attualmente la restituzione di biciclette, devi
ispezionare il campo |
stations[].is_installed |
Booleano | Obbligatorio |
Un valore booleano che indica se la stazione è attualmente sulla strada e installata. Se la stazione è installata sulla strada, imposta il valore su Se la stazione non è installata sulla strada, impostala su |
stations[].is_renting |
Booleano | Obbligatorio |
Un valore booleano che indica se la stazione attualmente noleggia biciclette. Se la stazione attualmente noleggia biciclette, imposta il valore su Se la stazione non noleggia biciclette, imposta il valore |
stations[].is_returning |
Booleano | Obbligatorio |
Un valore booleano che indica se è vero che la stazione attualmente accetta la restituzione di biciclette. Se la stazione accetta attualmente la restituzione delle biciclette, imposta il valore su Se la stazione non accetta attualmente la restituzione di biciclette, imposta
|
Di seguito è riportato un esempio di station_status.json
:
"stations": [
{
"station_id": "2",
"num_bikes_available": 6,
"vehicle_types_available": [
{
"vehicle_type_id" : "scooter_electric",
"count" : 2
},
{
"vehicle_type_id" : "bike_manual",
"count" : 4
}
],
"num_docks_available": 30,
"is_installed": true,
"is_renting": true,
"is_returning": true,
"last_reported": 1576119631
},
]